Trigger SQL Server sur l'enregistrement courant.

cs_sebas34500 Messages postés 9 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 26 septembre 2005 - 28 juil. 2004 à 15:24
gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 - 29 juil. 2004 à 10:10
Je voudrais créer un trigger en insertion où la condition ne s'exerce que sur l'enregistrement courant et non pas sur la table entière. Ce trigger se déclencherait si le DL_PrixRU = 0. Débutant sous SQL, je ne sais comment faire.

Je fais suivre le code de mon trigger :

CREATE TRIGGER [INS-ALERT_HA] ON [dbo].[F_DOCLIGNE]
FOR INSERT
AS
IF EXISTS (SELECT DL_PrixRU FROM [dbo].[F_DOCLIGNE]
WHERE DL_PrixRU = '0')
BEGIN
RAISERROR ('Veuillez saisir un prix d achat',10,1)
ROLLBACK TRANSACTION
END

Merci pour les renseignements !

SEBAS

3 réponses

gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
29 juil. 2004 à 08:31
Salut,

Le recordset INSERTED contient le dernier record inséré.
Ex pour récupéré les valeurs dans des variables

--Récupération des valeurs du record inséréSELECT @TagName INSERTED.TagTbox, @TimeValue INSERTED.Time, @TagValue = INSERTED.Status
FROM INSERTED

A+
0
cs_sebas34500 Messages postés 9 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 26 septembre 2005
29 juil. 2004 à 09:49
Merci mais quand j'utilise la clause INSERTED, en utilisant le code suivant :

CREATE TRIGGER [CHRIS] ON [dbo].[F_DOCLIGNE]
FOR INSERT
AS
IF EXISTS (SELECT * FROM INSERTED
WHERE DL_PrixRU is null)
BEGIN
RAISERROR ('Veuillez saisir un prix d achat',11,1)
ROLLBACK TRANSACTION
END

J'ai un message d'erreur dans tous les cas :"Erreur de conversion du type de données de VarChar en Numeric".

D'où cela peut-il provenir ?
Merci.

SEBAS
0
gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
29 juil. 2004 à 10:10
Essaie plutôt ceci:
CREATE TRIGGER [CHRIS] ON [dbo].[F_DOCLIGNE]
FOR INSERT
AS
IF INSERTED.DL_PrixRU IS NULL
BEGIN
RAISERROR ('Veuillez saisir un prix d achat',11,1)
ROLLBACK TRANSACTION
END

A+
0
Rejoignez-nous