|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
|
Поле, автоматически высчитывающее своё значение исходя из предыдущей записи24.07.2012, 17:50. Показов 4560. Ответов 8
Уважаемые форумчане, помогите мне с моей проблемой.
Имеется таблица следующей структуры: |IDОперация (PK,int)| |Приход (money)| |Расход (money)| |Остаток (money)| В один момент времени может быть заполнен только один из столбцов: Приход или Расход. Поле остаток должно высчитываться в зависимости от того заполнено сейчас поле приход или расход. При этом, Остаток=Остаток(предыдущее значение)+Приход (либо - Расход). Каким образом данную функциональность реализовать? Использовать триггеры или что? С server'ом раньше особо не работал никогда. У каждого поля имеется computed column specification, где можно ввести какую то формулу для рассчёта, мне это поможет? БД будет использоваться для Asp.net Mvc приложения. В принципе, там это всё можно сделать в коде, но хотелось бы на уровне субд чтобы было это. Наибольший интерес представляет вопрос как получить значение предыдущей записи. Буду благодарен помощи. Спасибо
0
|
|
| 24.07.2012, 17:50 | |
|
Ответы с готовыми решениями:
8
Своё поле при создании или редактировании записи Вывод в поле предыдущей записи таблицы |
| 24.07.2012, 18:02 | |
|
На самом деле, SQL Server не дает никаких гарантий, что запись, добавленная последней, будет последней в выборке. Поэтому без введения порядкового номера записи вы рискуете получить неверные данные. Ну а с введением порядкового номера можно сортировать по нему и брать top 1, к примеру. Главное не забыть, что апдейт таблицы в триггере на апдейт может привести к некоторым проблемам
![]() Добавлено через 2 минуты Кстати, порядковый номер можно как раз делать автоматически - там есть поле Identity Specification. Если поле типа int, то можно выставить Identity Specification в Yes и Increment в единичку.
1
|
|
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
|
| 24.07.2012, 18:16 [ТС] | |
|
да там так и было, поле IDОперация - ключевое, автоинкрементное.
Сейчас буду триггер значит писать
0
|
|
|
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
|
|
| 24.07.2012, 22:19 | |
|
Нет ни каких проблем на весу остаток держать, получая его при необходимости SQL-запросом на основании всех приходов и расходов. И в записи движения держал бы просто вид движени (приход или расход) и одну сумму
0
|
|
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
||||||
| 25.07.2012, 07:56 [ТС] | ||||||
|
в общем, вот так сделал, раз второй в жизни писал триггер, так что не судите строго, если у кого есть предложения, как оптимизировать, буду рад:
0
|
||||||
| 25.07.2012, 11:03 | |||||||||||||||||||||
|
А это какой сервер? Тут вы на каждом инсерте будете суммировать всю таблицу и через лет пять вас пользователи просто проклянут. Может лучше использовать последнее значение остатка?
Вместо
И еще - запись
1
|
|||||||||||||||||||||
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
|||||||||||
| 25.07.2012, 11:22 [ТС] | |||||||||||
|
во, мне приходилось сумму высчитывать каждый раз, потому что мой запрос
IgorTsapko, спасибо. А сервер 2012
0
|
|||||||||||
| 25.07.2012, 11:29 | |
|
Рад что помогло
Обращайтесь если будут вопросы.
0
|
|
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
|
|
| 25.07.2012, 12:48 | |
|
0
|
|
| 25.07.2012, 12:48 | |
|
Помогаю со студенческими работами здесь
9
Отображение в поле значения предыдущей записи Значение предыдущей записи +1 Значение полей формы из предыдущей записи Значение из предыдущей записи этого же поля
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|