cs_sebas34500
Messages postés9Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention26 septembre 2005
-
28 juil. 2004 à 15:24
gaa179
Messages postés361Date d'inscriptionmercredi 21 mai 2003StatutMembreDernière intervention12 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
cs_sebas34500
Messages postés9Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention26 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".
gaa179
Messages postés361Date d'inscriptionmercredi 21 mai 2003StatutMembreDernière intervention12 novembre 20092 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