2016-05-15 7 views
-2

Ich versuche, einen Trigger in SQL Server-Datenbank Tabelle hinzufügen, zuerst alles ist in Ordnung, aber nachdem ich feststelle, dass ich kann ' t Fügen Sie Daten in meine Tabelle ein, dann wird diese Nachricht angezeigt:SQL Server-Unterabfrage hat mehr als 1 Wert zurückgegeben. Dies ist nicht erlaubt, wenn die Unterabfrage =,! =, <, <= , >,> =, mit Triggern

SQL Server-Unterabfrage gab mehr als 1 Wert zurück. Dies ist nicht zulässig, wenn die Unterabfrage folgt =, =, <, < =,>,> =

Wenn Sie eine Idee haben dieses Problem zu lösen, bitte helfen Sie mir!;

Meine Anrede.

+2

Es ist unmöglich für uns, Ihnen mit Code zu helfen, den wir nicht sehen können. Die Fehlermeldung ist ziemlich klar. Daher müssen Sie Ihre Unterabfrage ändern, damit sie nicht mehr als eine Zeile zurückgeben kann, oder Ihren Code neu schreiben, um keine Unterabfrage zu verwenden. –

Antwort

0

Das Problem ist, dass Sie etwas davon haben:

SELECT foo 
FROM Bar 
WHERE baz = (
     SELECT baz 
     FROM Whatsit 
     WHERE a = 42 
); 

Das Bit in () ist die Unterabfrage. Sie können das nicht tun, wenn die Unterabfrage mehr als eine Zeile zurückgibt, weil SQL Server dann keine Ahnung hat, welchen Zeilenwert er für den Vergleich verwenden soll.

die Lösung entweder:

  1. die Unterabfrage ändern, damit es gibt nur eine einzige Zeile oder

  2. Ändern Sie die Gesamtaussage verbindet

, die Sie verwenden Verwendung hängt von der spezifischen Abfrage ab.

0

Wenn Sie = oder! = Verwenden, können Sie stattdessen IN oder NOT IN verwenden. Je nachdem, was Sie versuchen, können Sie auch EXISTS oder NOT EXISTS verwenden.

Verwandte Themen