15.10.2012 Views

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ACTIONSCRIPT 3.0 ENTWICKLERHANDBUCH<br />

SQL-Unterstützung in lokalen Datenbanken<br />

DELETE – OLD-Verweise sind gültig<br />

Das angegebene Timing (BEFORE, AFTER oder INSTEAD OF) bestimmt, wann die trigger-step-Anweisungen in<br />

Relation zum Einfügen, Ändern oder Entfernen der zugeordneten Zeile ausgeführt werden. Eine ON CONFLICT-<br />

Klausel kann als Teil einer UPDATE- oder INSERT-Anweisung in einem trigger-step angegeben werden. Wenn<br />

jedoch eine ON CONFLICT-Klausel als Teil der Anweisung angegeben wird, die den Auslöser auslöst, wird<br />

stattdessen diese Konfliktverwaltungsrichtlinie verwendet.<br />

Zusätzlich zu Tabellenauslösern kann in einer Ansicht ein INSTEAD OF-Auslöser erstellt werden. Wenn in einer<br />

Ansicht ein oder mehrere INSTEAD OF INSERT-, INSTEAD OF DELETE- oder INSTEAD OF UPDATE-Auslöser<br />

definiert sind, wird es nicht als Fehler betrachtet, den zugeordneten Anweisungstyp (INSERT, DELETE oder<br />

UPDATE) für die Ansicht auszuführen. In diesem Fall wird der zugeordnete Auslöser durch die Ausführung von<br />

INSERT, DELETE oder UPDATE für die Ansicht ausgelöst. Da es sich bei dem Auslöser um einen INSTEAD OF-<br />

Auslöser handelt, werden die der Ansicht zugrunde liegenden Tabellen nicht von der Anweisung geändert, die den<br />

Auslöser auslöst. Die Auslöser können jedoch verwendet werden, um Änderungen an den zugrunde liegenden<br />

Tabellen vorzunehmen.<br />

Beim Erstellen eines Auslösers für eine Tabelle mit einer INTEGER PRIMARY KEY-Spalte ist ein wichtiger Punkt zu<br />

beachten. Wenn ein BEFORE-Auslöser die INTEGER PRIMARY KEY-Spalte einer Zeile ändert, die von der<br />

Anweisung aktualisiert werden soll, die den Auslöser auslöst, findet diese Aktualisierung nicht statt. Dies lässt sich<br />

umgehen, indem die Tabelle mit einer PRIMARY KEY-Spalte anstatt mit einer INTEGER PRIMARY KEY-Spalte<br />

erstellt wird.<br />

Ein Auslöser kann mit der DROP TRIGGER-Anweisung entfernt werden. Wenn eine Tabelle oder Ansicht entfernt<br />

wird, werden automatisch auch alle Auslöser entfernt, die dieser Tabelle oder Ansicht zugeordnet sind.<br />

RAISE()-Funktion<br />

Die spezielle SQL-Funktion RAISE() kann in einer trigger-step-Anweisung eines Auslösers verwendet werden. Diese<br />

Funktion hat die folgende Syntax:<br />

raise-function ::= RAISE ( ABORT, error-message ) |<br />

RAISE ( FAIL, error-message ) |<br />

RAISE ( ROLLBACK, error-message ) |<br />

RAISE ( IGNORE )<br />

Wenn während der Auslöserausführung eine der drei ersten Formen aufgerufen wird, wird die angegebene ON<br />

CONFLICT-Verarbeitungsaktion (ABORT, FAIL oder ROLLBACK) ausgeführt und die Ausführung der aktuellen<br />

Anweisung wird beendet. ROLLBACK wird als fehlgeschlagene Ausführung der Anweisung betrachtet. Deshalb löst<br />

die SQLStatement-Instanz, deren execute()-Methode ausgeführt wurde, ein error-Ereignis (SQLErrorEvent.ERROR)<br />

aus. Das SQLError-Objekt in der error-Eigenschaft des ausgelösten Ereignisobjekts hat für die details-Eigenschaft den<br />

Wert, der in der error-message eingestellt ist, die in der RAISE()-Funktion festgelegt ist.<br />

Wenn RAISE(IGNORE) aufgerufen wird, werden der Rest des aktuellen Auslösers, die Anweisung, die die<br />

Ausführung des Auslösers ausgelöst hat, und alle nachfolgenden Auslöser, die ausgeführt würden, verworfen. Es<br />

werden keine Datenbankänderungen zurückgenommen. Wenn die Anweisung, die die Ausführung des Auslösers<br />

verursacht hat, selbst Teil eines Auslösers ist, nimmt dieses Auslöserprogramm seine Ausführung zu Beginn des<br />

nächsten Schritts wieder auf. Weitere Informationen zu den Algorithmen für die Konfliktauflösung finden Sie im<br />

Abschnitt ON CONFLICT (Konfliktalgorithmen).<br />

DROP TRIGGER<br />

Die DROP TRIGGER-Anweisung entfernt einen Auslöser, der von der CREATE TRIGGER-Anweisung erstellt<br />

wurde.<br />

sql-statement ::= DROP TRIGGER [IF EXISTS] [database-name.] trigger-name<br />

Letzte Aktualisierung 27.6.2012<br />

1182

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!