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 : Sélectionner tout - Visualiser dans une fenêtre à part
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,