Je ne suis pas si expérimenté sur les bases de données, si nue avec moi. ;-) Un déclencheur FOR INSERT assez simple renvoie l'erreur "La sous-requête a renvoyé plus de 1 valeur .." lors de l'insertion de plusieurs lignes à la fois. Quand j'insère des lignes dans la table SOA.dbo.photos_TEST en utilisant une instruction comme;La sous-requête a renvoyé plus de 1 valeur. sur MS SQL 2005 déclencheur
INSERT INTO SOA.dbo.photos_TEST (id,length,picture,type,name,value,arrivaldatetime)
SELECT VW.id, ... ,
FROM SOA.dbo.AeosPhotoTEST_VW vw
WHERE ...
L'insertion échoue. Mais quand j'ajoute un TOP (1) à l'instruction SELECT, le déclencheur ne signale pas d'erreur. Il est donc probable que l'instruction "SELECT VALUE FROM INSERTED" dans le déclencheur renvoie toutes les lignes de la table INSERTED. Dois-je itérer dans la gâchette througg toutes les lignes dans INSERTED? Toute suggestion est la bienvenue.
Le code actuel du déclencheur est;
SELECT @VALUE = (SELECT VALUE FROM INSERTED)
SET NOCOUNT ON
BEGIN
DELETE FROM SOA.dbo.photos_TEST
WHERE (value = @VALUE)
AND (arrivaldatetime < (SELECT arrivaldatetime
FROM INSERTED
WHERE value = @VALUE))
END
Salut John, en changeant le déclencheur comme vous le suggérez retourne toujours « sous-requête retourné plus de 1 valeur. Ce n'est pas autorisée lorsque le ... » lors de l'ajout de plus de 1 rang. – pcvnes
+1 pour m'avoir appris un nouveau truc. Très apprécié, merci. –
@pcvnes, il ne devrait pas. Êtes-vous certain d'avoir changé le déclencheur? Pouvez-vous poster le script mis à jour? –