wie erstellen Sie vor dem update-trigger in sql server 2005
Gibt es trotzdem, wo kann ich einen trigger erstellen, die ausgeführt wird, bevor das update/delete stattfindet( und dann das eigentliche update/delete stattfindet)? und wie kann ich drop
einen trigger aus einer Tabelle?
- Hi, was war der eigentliche Grund, warum Sie ausführen müssen, bevor Sie das update löschen erfolgt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
so löschen Sie einen trigger verwenden:
OP-sagte in einem Kommentar:
Sie nicht wirklich brauchen, um zu verhindern, dass das ursprüngliche update, Sie können lassen Sie es geschehen, und dann in die trigger überprüfen Sie das problem und rollback, wenn nötig. Dies ist, wie die Durchsetzung der Logik für eine oder viele betroffene Zeilen, da muss man BEITRETEN, um zu bestimmen, die
childcount
des betroffenen Zeilen:Es wirft den Fehler, wenn es ist ein Verstoß gegen die Logik, und den ursprünglichen Befehl, unterliegt einem rollback.
Wenn
childcount
ist eine Spalte in die Tabelle der betroffenen, dann verwenden Sie einen trigger, wie dieses zur Durchsetzung der Logik:Wenn Sie wollen einfach nur zu ignorieren, das update für alle Zeilen, die gegen die Regel verstoßen versuchen Sie dies:
Es aktualisiert nur die Zeilen, die ein Kind haben zählen, die weniger als 5, wobei alle betroffenen Zeilen, die nicht die Voraussetzung (keine Fehlermeldung).
Diesem Artikel von microsoft erläutert die syntax erstellen von Triggern.
http://msdn.microsoft.com/en-us/library/ms189799.aspx
Gibt es nicht wirklich eine " vor " - Auslöser, aber Sie verwenden können, für die ein INSTEAD OF-trigger, die Ihnen erlaubt, zu springen, anstelle von was auch immer Aktionen versucht wird, dann definieren Sie Ihre eigenen Aktionen.
Ich verwendet habe, die Technik für die Versionierung von Daten.
EINGEFÜGT ist ein bisschen irreführend hier, aber es enthält die details der Aktion, bevor es Auftritt, können Sie dann definieren Sie Ihre eigene Aktion mit diesen Daten.
Edit:
Als pro-Kommentare unter meiner Antwort, meinem Beispiel kann gefährlich sein, wenn mehrere Zeilen aktualisiert werden, auf einmal. Meine Anwendung nicht für das so es ist in Ordnung in diesem Fall. Ich würde Zustimmen, dass das oben genannte ist eine schlechte Praxis, unabhängig.
childcount
einer besonders Benutzer, wenn das ist mehr als5
nicht aktualisieren Sie die Benutzer.wie kann ich das verwenden von instead of-trigger?COUNT(*) FROM INSERTED
oderCOUNT(*) FROM DELETED
und scheitern, wenn>1
. um sicherzustellen, dass Ihr "immer nur eins" durchgesetzt werden, indem der Auslöser, dass geschrieben wird, nur mit einer Zeile.drop trigger-
use database_name
Hier ist ein einfacher trigger, der überprüft, Spalten, Werte, und die Feuer, bevor Sie aktualisieren oder einfügen, und löst einen Fehler aus.