Trigger-Kompatibilität erfordert die Kompatibilität der Triggerfunktionen und der Triggersyntax. Dieser Abschnitt bietet einen Überblick über die Funktionskompatibilität von Transact-SQL- und SQL Anywhere-Trigger.
Adaptive Server Enterprise unterstützt AFTER-Trigger auf Anweisungsebene, also Trigger, die ausgelöst werden, nachdem die Trigger-auslösende Anweisung abgeschlossen ist. SQL Anywhere unterstützt BEFORE-, AFTER- und INSTEAD OF-Trigger auf Zeilenebene und AFTER- und INSTEAD OF-Trigger auf Anweisungsebene. Weitere Hinweise finden Sie unter Einführung in Trigger.
Trigger auf Zeilenebene sind kein Teil der Transact-SQL-Kompatibilitätsfunktionen. Hinweise finden Sie unter Prozeduren, Trigger und Batches verwenden.
In der folgenden Liste werden einige Funktionen von Transact-SQL-Triggern beschrieben, die entweder nicht unterstützt werden oder in SQL Anywhere anders sind:
Trigger, die andere Trigger auslösen Angenommen, ein Trigger führt eine Aktion aus, die, wenn sie direkt von einem Benutzer ausgeführt wird, einen weiteren Trigger auslösen würde. SQL Anywhere und Adaptive Server Enterprise verhalten sich in diesem Fall etwas unterschiedlich. Das Standardverhalten von Adaptive Server Enterprise besteht darin, dass Trigger weitere Trigger bis zu einer konfigurierbaren Verschachtelungsebene auslösen, welche den Standardwert 16 hat. Sie können die Verschachtelungsebene mit der Option "nested triggers" in Adaptive Server Enterprise steuern. In SQL Anywhere lösen Trigger unbegrenzt weitere Trigger aus, bis der Speicher aufgebraucht ist.
Trigger, die sich selbst auslösen Angenommen, ein Trigger führt eine Aktion aus, die, wenn sie direkt von einem Benutzer ausgeführt wird, denselben Trigger auslösen würde. SQL Anywhere und Adaptive Server Enterprise verhalten sich in diesem Fall etwas unterschiedlich. In SQL Anywhere lösen sich Nicht-Transact-SQL-Trigger standardmäßig selbst rekursiv aus, während sich Trigger im Transact-SQL-Dialekt nicht selbst rekursiv auslösen. Für Trigger im Transact-SQL-Dialekt können Sie jedoch die Option "self_recursion" der Anweisung SET [T-SQL] verwenden, um einem Trigger eine rekursive Selbstauslösung zu erlauben. Weitere Hinweise finden Sie unter SET-Anweisung [T-SQL].
Das Standardverhalten von Adaptive Server Enterprise besteht darin, dass ein Trigger sich nicht selbst rekursiv aufruft. Sie können jedoch die Option "self_recursion" verwenden, um die Rekursion zu ermöglichen.
ROLLBACK-Anweisung in Triggern Innerhalb eines Triggers lässt Adaptive Server Enterprise die ROLLBACK TRANSACTION-Anweisung zu, welche die gesamte Transaktion, deren Bestandteil der Trigger ist, wieder zurücksetzt. SQL Anywhere lässt ROLLBACK- (oder ROLLBACK TRANSACTION-) Anweisungen in Triggern nicht zu, weil ein Trigger-Vorgang und sein Trigger zusammen eine atomare Anweisung bilden.
SQL Anywhere bietet die Adaptive Server Enterprise-kompatible ROLLBACK TRIGGER-Anweisung zum Zurücksetzen von Vorgängen, die innerhalb von Triggern ausgeführt wurden. Weitere Hinweise finden Sie unter ROLLBACK TRIGGER-Anweisung.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |