Ich habe einige Beiträge hier darüber gelesen, aber ich verstehe überhaupt nicht.SQL Server - Unterabfrage zurückgegeben mehr als 1 Wert
In meinem Fall habe ich einen Tisch haben, sagen wir mal ‚Eltern‘ mit zwei Spalten ID, GESTRICHEN.
ID ist int und DELETED ist eine Bitspalte.
Ich habe eine andere Tabelle, sagen wir "Kind" mit Spalten ID, ID_PARENT, NAME, als Elterntabelle gelöscht.
ID und ID_PARENT sind int Name nvarchar ist DELETED ist ein bisschen
ich ein Auslöser für UPDATE auf dem Tisch Eltern erstellt haben, die Child-Tabelle aktualisiert:
UPDATE
[dbo].[Child]
SET
[DELETED] = I.[DELETED]
FROM
INSERTED I INNER JOIN [dbo].[Child] AS c
ON I.ID = c.ID_PARENT
WHERE
c.[NAME] IS NOT NULL;
Beachten Sie, dass ein Elternteil kann viele Kinder haben, und ein Kind nur ein Elternteil. So
wenn ich unten query:
UPDATE [dbo].[Parent]
SET DELETED = 1
WHERE ID IN (100, 200);
Natürlich ist dies auf viele Zeilen auswirken wird. Ich bekomme unter Fehler:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Ihre Trigger prüfen - ich wette, dass Sie eine, die auf 'Update' läuft, die nur eine Zeile auf einmal aktualisiert wird davon ausgegangen, (zum Beispiel ist schlecht konzipiert) – Bridge
@Bridge Sie richtig sind. Ich habe andere Auslöser überprüft, und es gibt einen auf der Tabelle Child, der den Fehler verursacht. Vielen Dank! – user1624552
Kein Problem - bitte posten Sie eine Antwort auf diesen Effekt und akzeptieren Sie es, damit andere wissen, dass Ihre Frage gelöst ist :) – Bridge