#triggers #updates #sybase #sybase-asa
#триггеры #Обновления #sybase #sybase-asa
Вопрос:
Я хочу создать триггер с условием, есть 2 таблицы Trx (столбцы = TrxResp, Prodcode, TrxFwdIID, TrxTType) и депозит (столбцы = AccountXID, баланс).
Дело в том, что если таблица Trx обновляется с условием, где TrxResp в (51,55) и Prodcode в (101001, 103001) и TrxFwdIID = (28) и TrxTType в (30,1,49,46), то триггер обновит баланс столбца в таблице Deposit с этим условием:
@Amount = 2000
@Accountxid = 123
update Deposit set Balance = Balance - @Amount where AccountXID = @AccountXID;
Я пытался написать сценарий, как показано ниже, но, думаю, я совершенно не прав
CREATE TRIGGER "UpdateDepositBalance" after update OF prodcode in (101001, 103001),trxFwdIId = 28,trxttype in (30,1,49,46),trxresp in (51,55)
on TRx
for each row
begin
declate @Amount int;
declare @Accountxid int;
set @Amount = 2000
set @Accountxid = 123
update Deposit set Balance = Balance - @Amount where AccountXID = @AccountXID;
end;
Кто-нибудь может мне помочь, пожалуйста. Я так слаб в триггерах и SP
Комментарии:
1. Вы указываете «SyBase» в своем названии и при этом отмечаете MySQL, SQL Server и PostgreSQL в своих тегах. Какую СУБД вы на самом деле используете?
2. Извините, уже отредактировано
3. что вы подразумеваете под «совершенно неправильным»? вы получаете ошибку во время создания или выполнения (и если да, то какую ошибку)? спусковой крючок не срабатывает? триггер срабатывает, но строка не обновляется (или она обновляется, но с неправильным значением)?
4. Вы рассмотрели эти примеры триггеров SQLAnywhere 16 ? взгляните на 3-й пример снизу, в котором есть
if
тест … Я предполагаю, что вы могли бы объединить несколько из этихif
операторов вместе, чтобы соответствовать вашим требованиям