Eh bien, j'essaie d'écrire un déclencheur où un client essaie d'acheter quelque chose, mais s'il passe sa limite de cartes de crédit, la transaction doit être annulé.MSSQL Trigger: L'identifiant multi-parties "i.charged_amount" ne peut pas être lié
mes tables sont:
clients (nom, numéro de sécurité sociale, Code),
comptes (customer_code, acc_number, équilibre, taux),
creditcard (émis, expiré, limite, l'équilibre, cc_number),
transactions (date, cc_number, charged_amount, ** conf_numb ** er, shop_code)
et ce que je l'ai écrit est
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
Mais je reçois un
Msg 4104, Niveau 16, État 1, Procédure check_balance, ligne 10 L'identifiant multi-partie "i.charged_amount" ne pouvait pas être lié. où ligne 10 est IF (@balance + i.charged_amount> @limit) Je sais que le masg signifie que je ne peux pas utiliser i. *, Parce que la portée de celui-ci est seulement dans le select..from. J'ai essayé d'utiliser la nouvelle ligne de référencement comme je, mais j'ai eu une erreur de syntaxe près de référencement. J'utilise le serveur MSSQL 2005 je ne suis pas trop familier avec les déclencheurs dans sql, alors pourriez-vous s'il vous plaît m'aider?
Cela permettrait toujours à travers plusieurs achats différents sur la même carte qui dépassent collectivement la limite de compte. –
@Martin, bonne prise, vous obtenez un "A" sur les devoirs pour aujourd'hui! –
Ha Ha! +1 Pour le correctif –