Wie schreibt man trigger für mehrere Zeile zu aktualisieren?
Ich geschrieben habe, einen update-trigger, der gut arbeitet, wenn ich das update nur eine Zeile, sondern gibt eine Fehlermeldung, wenn ich aktualisiert, mehrere Zeilen.
Fehler:
Msg 512, Ebene 16, Status 1, Prozedur Sale_OnUpdate, Zeile 14 Unterabfrage hat mehr als 1 Wert.
Dies ist nicht zulässig, wenn die Unterabfrage folgt =, !=, <, <= , >, >= oder wenn die Unterabfrage als Ausdruck verwendet.
Hier ist Trigger
ALTER TRIGGER [dbo].[Sale_OnUpdate] ON [dbo].[Sale]
AFTER Update
AS
Declare @ID as decimal
Declare @User as varchar(250)
Declare @Status as varchar(250)
set @ID = (Select ID from Inserted)
set @User = (Select UpdatedByUser from Inserted)
set @Status = Isnull((Select Status from Inserted),'')
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
INSERT INTO [dbo].[Log]
(
[RecordID]
,[Date]
,[Time]
,[UserName]
,[TableName]
,[Action]
)
VALUES
(
@ID
,GetDate()
,GetDate()
,@User
,'Sale'
,'Update,' + @Status
)
END
Was ändern sollte ich tun, um es Arbeit für mehrere Zeilen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden:
versuchen, diese
Ich hatte ein ähnliches problem, die Idee hier ist, dass die INSERTED-Tabelle viele Datensätze haben, wenn Sie so wollen, analysieren Sie jeden Wert, benötigen Sie zum Durchlaufen der Tabelle mit einem cursor Beispiel:
Schleife durch die Tabelle EINGEFÜGT