| 

.NET C# Java Javascript Exception

2
Hallo,

mal eine Designfrage, wenn ich mir Beispiele von Insert Triggern ansehe, dann finde ich sehr oft folgendes:

IF @@rowcount = 0 RETURN;


Ich verstehe natürlich was es bewirkt, ich verstehe aber nicht, warum es jemals zu dem Fall kommen sollte. Der Insert Trigger wird getriggert, wenn etwas "geinserted" wurde. Wie kann da die @@Rowcount jemals 0 sein?
News:
27.02.2012
Feroc 1,2k 2 9
Wird der Insert Trigger verlässlich nur dann ausgeführt, wenn etwas geinserted wurde? Oder wäre auch ein Szenario denkbar wie: Fehler tritt auf, Transaktion wird zurückgerollt, Insert-Trigger-Code wurde aber schon gefeuert? Auf den M$-Seiten oder in M$SQL-Blogs werden gelegentlich Diagramme veröffentlicht, wie eine SQL-Abfrage aufgedröselt und in welcher Reihenfolge genau die einzelnen Vorgangsschritte gestartet und wie und wann sie committed werden. Vielleicht hilft das weiter.
mupan 27.02.2012
Das wäre natürlich eine Idee. Das bringt natürlich nur was, wenn der Rollback zwischen Aufrufen des Triggers und Abfrage passiert. Knappes Zeitfenster...
Feroc 27.02.2012
... oder der Insert Trigger erfolgsunabhängig ausgeführt wird. Weil es auch bei Misserfolg was aufzuräumen geben könnte. Der "Fehler" / die Ausnahme kann ja z.B. darin bestehen, dass ich in Tabelle tblX erst was einfügen kann, wenn in Tabelle tblY bereits ein Datensatz erzeugt wurde und Teile daraus (die ID jedenfalls) in tblX übernommen werden müssen. Das kann ich vorher checken, oder ich kann den Fehler / die Ausnahme abfangen. Das kann am Server passieren, oder im Code eines Frontends. Hier wird jetzt einfach nur rausgegangen, aber ich könnte ja noch mehr machen wollen.
mupan 27.02.2012
1 Antwort
3
Es ist auch so ein Statement möglich:

INSERT INTO Foo(X, Y)
SELECT X, Y
FROM Bar
WHERE Z = 42;

Wenn in Bar kein Datensatz mit Z = 42 enthalten ist, wird zwar der Trigger für Foo ausgelöst, @@ROWCOUNT ist dann aber 0.
01.03.2012
TSchremser 46 1
mmh... ok, das wusste ich nicht. Gut zu wissen.
Feroc 01.03.2012

Stelle deine Sql-server-2008-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH