OVH Cloud OVH Cloud

trigger delete

1 réponse
Avatar
guillard
voici mon trigger pour mettre =E0 jour deux tables, pour que=20
lorsque un matricule est supprim=E9 sur une table qu'il le=20
soit aussi dans l'autre.

CREATE TRIGGER dbo.DELPersonnel
ON dbo.GenPersonnel
FOR DELETE
AS

DELETE FROM InfoPersonnel
WHERE InfoPersonnel.Matricule =3D (SELECT=20
InfoPersonnel.Matricule FROM InfoPersonnel=20
WHERE InfoPersonnel.Matricule NOT IN (SELECT=20
GenPersonnel.Matricule FROM GenPersonnel))
GO

Il fonctionne sans probl=E8me quand on travaille ligne =E0=20
ligne. Mais il ne fonctionne plus en requete du type
DELETE FROM GenPersonnel
Il renvoie l'erreur suivante
La sous-requ=EAte a retourn=E9 plusieurs valeurs. Cela n'est=20
pas autoris=E9 quand la sous-requ=EAte suit =3D, !=3D, <, <=3D , >,=20
>=3D ou quand elle est utilis=E9e en tant qu'expression.
L'instruction a =E9t=E9 arr=EAt=E9e.

Merci pour votre aide

1 réponse

Avatar
VUILLERMET Jacques
Remplace "=" par "IN".

jv

"guillard" a écrit dans le message de news:
0ca101c35b4f$1c7c2d70$
voici mon trigger pour mettre à jour deux tables, pour que
lorsque un matricule est supprimé sur une table qu'il le
soit aussi dans l'autre.

CREATE TRIGGER dbo.DELPersonnel
ON dbo.GenPersonnel
FOR DELETE
AS

DELETE FROM InfoPersonnel
WHERE InfoPersonnel.Matricule = (SELECT
InfoPersonnel.Matricule FROM InfoPersonnel
WHERE InfoPersonnel.Matricule NOT IN (SELECT
GenPersonnel.Matricule FROM GenPersonnel))
GO

Il fonctionne sans problème quand on travaille ligne à
ligne. Mais il ne fonctionne plus en requete du type
DELETE FROM GenPersonnel
Il renvoie l'erreur suivante
La sous-requête a retourné plusieurs valeurs. Cela n'est
pas autorisé quand la sous-requête suit =, !=, <, <= , >,
= ou quand elle est utilisée en tant qu'expression.


L'instruction a été arrêtée.

Merci pour votre aide