2011-01-10 6 views
2

Ich brauche die ID der aktualisierten Zeile in einer Tabelle zu erhalten, es zu benutzen, um eine andere Tabelle zu aktualisieren über Trigger, bevor sie in SQL Server auftreten

Auch müssen die ID der gelöschten Zeile in einer Tabelle abrufen, um sie über Trigger zur Aktualisierung einer anderen Tabelle zu verwenden

Wie kann ich das tun?

Gibt es eingebaute Funktionen in SQL Server?

Wenn nicht, welche Art von Trick, um dieses

+3

Neue und gelöschte Zeilen sind innerhalb der Trigger verfügbar. http://technet.microsoft.com/en-us/library/aa258254(SQL.80).aspx –

+2

Denken Sie daran, dass ein Update/Einfügen/Löschen Auswirkungen auf mehrere Zeilen haben kann. Sie müssen die 'inserted' und' deleted' Pseudo ** -Tabellen verwenden ** –

Antwort

5

Innerhalb Ihre Trigger erreichen helfen können, wenn Sie den alten Wert wissen möchten, die entweder wurde aktualisiert/gelöscht

SELECT idColumnName FROM deleted 

Wo idColumnName die Spalte Diese enthält die ID, an der Sie interessiert sind.

Sie können diesen ID-Wert dann verwenden, um die von Ihnen benötigte Verarbeitung auszuführen. Zusätzlich. Wenn Sie den NEUEN Wert verwenden möchten, der aktualisiert wird, gibt Ihnen die folgende Abfrage das. Dies ist besonders nützlich bei Updates, bei denen Sie alte/neue Werte bestimmter Felder vergleichen möchten. In Ihrem Fall ist dies, da es sich um eine ID-Spalte handelt, wahrscheinlich nicht relevant

SELECT idColumnName FROM inserted 
+0

vielen Dank für Ihre Antwort InSane, ich erinnere mich nur an die Trigger-Tabellen eingefügt und aktualisiert tatsächlich verwende ich die Trigger nicht so oft ich total vergaß sie. – user569392

+2

Bitte nehmen Sie an, dass es nur einen Datensatz geben wird. Schreiben Sie den Code, den Sie verarbeiten müssen, wenn die eingefügten und die gelöschten Tabellen mehrere Zeilen enthalten. Wenn nur ein Datensatz geändert wird, ist dies der größte Fehler beim Schreiben des Triggers. Wenn Sie einen Cursor verwenden, um alle Datensätze zu durchsuchen, ist der nächste schwerwiegende Fehler. Verwenden Sie einen Set-basierten Prozess, um mehrere Rcords zu verarbeiten. – HLGEM

Verwandte Themen