Wie verwenden Sie eingefügt\deleted-Tabelle in der gespeicherten Prozedur?
Ich erstellen Trigger für mehrere Tabellen. Die Trigger haben gleiche Logik. Ich wollen eine gemeinsame gespeicherten Prozedur.
Aber ich weiß nicht, wie die Arbeit mit eingefügt und gelöscht Tabelle.
Beispiel:
SET @FiledId = (SELECT FiledId FROM inserted)
begin tran
update table with (serializable) set DateVersion = GETDATE()
where FiledId = @FiledId
if @@rowcount = 0
begin
insert table (FiledId) values (@FiledId)
end
commit tran
- Das können Sie nicht. die pseudo-Tabellen sind nur verfügbar, direkt in den Trigger. Und dein code ist fehlerhaft.
inserted
enthalten kann 0, 1 oder mehrere Zeilen -SET @FiledId = (SELECT FiledId FROM inserted)
ist die Auswahl eines Wertes aus einer diese Zeilen und ignorieren die anderen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine Tabelle geschätzten parameter zum speichern der eingefügten /gelöschten Werte von Triggern, und übergeben Sie es über den proc. Z. B., wenn alle Sie brauchen, in Ihr proc-ist die EINZIGARTIGE
FileID's
:Und übergeben Sie dann die eingefügten /gelöschten ids aus der trigger, z.B.:
Können Sie
dann
verwenden Sie diese beiden temp-Tabellen in stored proc
Den Tabellen inserted und deleted werden nur innerhalb der trigger. Sie können nur dann in der run-time. Sie enthält dann die betroffenen Zeilen.
Auch, dein code funktioniert möglicherweise nicht wie erwartet, wenn es gibt nicht genau eine Zeile eingefügt.