хорошо, я пытаюсь написать триггер, когда клиент пытается что-то купить, но если он превысит лимит своих кредитных карт, транзакция должна быть отменена.
мои таблицы:
клиенты (имя, ssn, код ),
учетные записи (customer_code, acc_number , баланс, ставка),
кредитная карта (выпущено, срок действия, лимит, баланс, cc_number),
транзакции (дата, cc_number, charge_amount, ** conf_numb ** er, shop_code)
и я написал
create trigger check_balance on transactions
for insert
as
Declare @balance int,
@limit int
SELECT @balance = balance, @limit = limit
FROM creditcard INNER JOIN inserted i ON creditcard.cc_number = i.cc_number
IF (@balance + i.charged_amount > @limit)
BEGIN
ROLLBACK TRANSACTION
END
Но я получаю
Сообщение 4104, уровень 16, состояние 1, процедура check_balance, строка 10 Не удалось связать многоэлементный идентификатор «i.charged_amount».где строка 10 - IF (@balance + i.charged_amount> @limit) я знаю, что маска означает, что я не могу использовать i. *, потому что область ее действия только в select..from.я попытался использовать ссылку на новую строку как я, но я получил синтаксическую ошибку около ссылки.Я использую MSSQL server 2005. Я не слишком знаком с триггерами в SQL, поэтому не могли бы вы мне помочь?