Je travaille sur des triggersurs en sql. J'essaie de faire un triggersur de mise à jour, mais je veux que cela fonctionne seulement si une certaine condition est remplie.
Par exemple, disons que j'ai une table X et deux colonnes A, B. Je ne veux pouvoir mettre à jour A ou B que lorsque A est inférieur à B pour que les nouvelles valeurs soient mises à jour.
Donc je fais un sortinggger comme ça
create sortinggger usortinggger on X for update as if (update(A) OR update(B)) begin if (A>B) RAISERROR (N' Incorrect %s %d.', -- Message text. 10, -- Severity, 1, -- State, N'number', -- First argument. 5); -- Second argument.
fin
Cependant je pense que je le fais mal. Qu'est-ce qui ne va pas?
Vous devez utiliser la table virtuelle INSERTED.
create sortinggger usortinggger on X for update as if (update(A) OR update(B)) begin if exists (SELECT * -- this subquery breaches the condition FROM INSERTED WHERE A>=B) -- might need some isnull if nulls are not allowed RAISERROR (N' Incorrect %s %d.', -- Message text. 10, -- Severity, 1, -- State, N'number', -- First argument. 5); -- Second argument. end