Trigger et delete

cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 - 21 avril 2010 à 17:11
JeremyLecouvert Messages postés 139 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 10 mai 2010 - 10 mai 2010 à 16:19
bonjour, je sais pas trop si je suis dans la bonne rubrique
ma question concerne donc les triggers

j'aimerais supprimer automatiquement (avec le trigger) la ligne d'une table a partir de la suppression de la ligne d'une autre table
j'ai une table vente (pas de id specifique , sauf ke l'heure , le n° du poste de vente , le id de l'article devrait suffir)
et une "sous table" que je vais créer en meme temps pour un certain type d'article magazine contenant le n° du magazine avec id de l'article, heure , n° de poste)

je voudrais donc que si je supprime la ligne de vente ... cela supprime la ligne de vente_magazine "automatiquement" par un trigger

j'ai essayé ca :

create trigger trig_vente_ardp_deleted on vente
for delete
as
delete from vente_ARDP where va_art=deleted.v_art and va_caisse=deleted.v_caisse
and va_date=deleted.v_date
and deleted.v_poste=va_poste
and deleted.v_qte=va_qte
go

mais j'ai le message de sqlserver :

Msg 4104, Level 16, State 1, Server FRANCOISXP\SQLEXPRESS2008, Procedure trig_vente_ardp_deleted, Line 4
L'identificateur en plusieurs parties "deleted.v_art" ne peut pas être lié.
Msg 4104, Level 16, State 1, Server FRANCOISXP\SQLEXPRESS2008, Procedure trig_vente_ardp_deleted, Line 4
L'identificateur en plusieurs parties "deleted.v_caisse" ne peut pas être lié.
Msg 4104, Level 16, State 1, Server FRANCOISXP\SQLEXPRESS2008, Procedure trig_vente_ardp_deleted, Line 5
L'identificateur en plusieurs parties "deleted.v_date" ne peut pas être lié.
Msg 4104, Level 16, State 1, Server FRANCOISXP\SQLEXPRESS2008, Procedure trig_vente_ardp_deleted, Line 6
L'identificateur en plusieurs parties "deleted.v_poste" ne peut pas être lié.
Msg 4104, Level 16, State 1, Server FRANCOISXP\SQLEXPRESS2008, Procedure trig_vente_ardp_deleted, Line 7
L'identificateur en plusieurs parties "deleted.v_qte" ne peut pas être lié.

est impossible a realiser ? sinon quelle doit etre la syntaxe pour que cela fonctionne... ??

merci

1 réponse

JeremyLecouvert Messages postés 139 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 10 mai 2010 2
10 mai 2010 à 16:19
Salut,

perso je pense que le mieux est d'ajouter un identifiant dans ta sous-table et de l'ajouter comme clé étrangère dans ta table principale... tu ajoutes la contrainte ON DELETE CASCADE, et t'as même plus besoin de ton trigger.


Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)
Rejoignez-nous