Проверьте СУММУ записей таблицы на INSERT - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть таблица, которая отслеживает транзакции для различных учетных записей:

AccountTransactions

AccountTransactionID int NOT NULL (PK) 
AccountID int NOT NULL (FK) 
Amount decimal NOT NULL

При вставке записи с отрицательной суммой в эту таблицу,Мне нужно убедиться, что сумма суммы столбца суммы для указанного аккаунта больше нуля.Если новая запись приведет к падению суммы SUM ниже нуля, запись не должна быть вставлена.

Например, если у меня есть следующие записи, вставка суммы -8,00 для AccountID 5 не должна бытьпозволено:

AccountTransactionID     AccountID     Amount
---------------------------------------------
1                        5             10.00
2                        6             15.00
3                        5             -3.00

Каков наилучший метод для достижения этой цели?Проверить ограничение, триггер или просто проверить это условие в хранимой процедуре?

Ответы [ 2 ]

2 голосов
/ 29 ноября 2011

Вы можете сделать простую проверку:

DECLARE @TheSum decimal(18,2)

SET @TheSum = (SELECT SUM(MyCol) FROM MyTable WHERE AccountID = @SomeParameter)

If @TheSum > 0 
  BEGIN
    --do your insert
  END
...
0 голосов
/ 29 ноября 2011

Вы можете добавить предложение where к вашей вставке:

insert  YourTable
        (AccountID, Amount)
select  @AccountID, @Amount
where   0 <= 
        (
        select  @Amount + sum(Amount) 
        from    YourTable 
        where   AccountID = @AccountID
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...