Créer un trigger INSERT/UPDATE
Bonjour,
Je cherche à créer un trigger sur SAGE qui va empêcher un utilisateur quelconque de mettre la valeur d'un champs d'une table supérieure à une variable initialisée au moment d'un INSERT ou d'un UPDATE.
Il y a une table F_PROTECTIONCPTA qui contient les utilisateurs et une autre table qui comprend un champs remise.
Donc, faire en sorte que si le nom de l'utilisateur est 'Administrateur' alors la remise ne peut pas être supérieure à la variable initialisée.
J'ai commencé par faire ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| USE BIJOU
IF EXISTS (SELECT NAME FROM SYSOBJECTS
WHERE NAME = 'BLOCK_USER_DISCOUNT' AND TYPE = 'TR')
DROP TRIGGER BLOCK_USER_DISCOUNT
GO
CREATE TRIGGER BLOCK_USER_DISCOUNT
ON F_DOCLIGNE
INSTEAD OF INSERT, UPDATE
AS
DECLARE @USER_ID INT,
@USER_NAME VARCHAR(35),
@CBCREATEUR CHAR(4),
@DISCOUNT DECIMAL(24,6),
@DO_TYPE SMALLINT
SELECT @USER_NAME = I.PROT_User
FROM F_PROTECTIONCPTA P INNER JOIN INSERTED I ON P.PROT_User = I.PROT_User
SELECT @DISCOUNT = DL_Remise01REM_Valeur, @DO_TYPE = DO_Type, @CBCREATEUR = cbCreateur FROM INSERTED
WHERE @DO_TYPE BETWEEN 0 AND 8
AND @CBCREATEUR = 'ERP1'
IF(@USER_NAME = 'Administrateur')
BEGIN
WHILE (@DISCOUNT > 50)
RAISERROR ('LA REMISE EST ELEVEE !',16,1)
ROLLBACK TRANSACTION
SET @DISCOUNT = @DISCOUNT - 1
CONTINUE;
IF(@DISCOUNT <= 50)
COMMIT
BREAK;
END |
mais je ne suis pas sûr.
Merci,