Achten Sie auf die Entwicklung des Triggerpunkt
- Trigger keine Parameter erhalten
- Je mehr sich der Auslöser, die die Betriebsleistung von DML senken
- Auslöser maximal 32k, wenn PL / SQL-Anweisung zu viel, können Sie gespeicherte Prozeduren, Trigger Aufruf
- Im operativen Teil des Trigger kann nur DML-Anweisungen (Einfügen, wählen, update, delete), können Sie DDL-Anweisungen nicht (erstellen, ändern, löschen)
- Trigger kann keine Transaktionssteueranweisungen (Commit, Rollback, Savepoint), als Teil einer Anweisung Trigger ausgelöst wird, auslösenden Anweisung legte einen Rollback enthalten, wird der Trigger auch verpflichtet, rollte zurück; Prozeduraufruf Triggerkörper die Funktion kann nicht Transaktionssteuerung Anweisungen verwenden
- Trigger Körper jede lange nicht erklären kann und Variablen Blog ,: neue und: alte Tabelle kann nicht lange Spalte oder ein Blog sein
- Eine Tabelle kann maximal 12 Auslösern aufweisen und zur gleichen Zeit das gleiche Ereignis, die gleiche Art von Trigger kann nur eine, noch Widersprüche zwischen den verschiedenen Flip-Flops
1 - Einsatz事件触发器 2 vor dem Einsatz / vor Einsatz für jede Zeile 3 nach Insert / nach Einsatz für jede Zeile 4 - Update事件触发器 5 vor dem Update / vor Aktualisierung für jede Reihe 6 nach der Aktualisierung / nach Aktualisierung für jede Reihe 7 - löschen事件触发器 8 vor löschen / vor löschen für jede Zeile 9 nach Delete / nach Delete für jede Zeile
Auslöser aktiviert und deaktiviert
. 1 - Aktivieren / Deaktivieren von einzelnen Flip-Flop 2 ALTER Trigger - trigger_name {enable / disable}; 3. - Aktivieren / Deaktivieren alle mit einer bestimmten Tabelle zugeordnet Trigger 4. ALTER Tabelle Tabellen_Name {enable / disable} Alle Triggers;
Trigger-Syntax
1. Erstellen [ oder Ersetzen ] Auslöser trigger_name 2 {vor / nach} - Zeit auszulösen . 3 { Löschen / INSERT / aktualisiert [ Spalten ] } - auslösendes Ereignis . 4 ON Tabelle . 5 [ für jede Zeile [WHERE (Bedingung) ] ] 6 DECLARE . 7 - lokale Variablen hier Wallpaper . 8 die beginnen . 9 PL / SQL - Anweisung 10 End ;
Fall
1, legen einen Druckdatenwort
1 erzeugen oder ersetzen Trigger trg_test1 2 nach dem Einsatz auf Tabelle 3 beginnen 4 dbms_output.put_line ( ' Insert erfolgreich! ' ) 5 Ende [ trg_test1 ] ;
2, können die Daten nicht in dem Wochenende eingefügt
. 1 Erstellen oder Ersetzen - Trigger trg_test2 2 vor INSERT ON Tabelle 3. DECLARE 4. T_day VARCHAR2 ( 10 ); . 5 die beginnen . 6 SELECT TO_CHAR (SYSDATE, ' Tag ' ) IN t_day von Dual - ; . 7 IF t_day in ( ' Samstag ' , ' Sonntag ' ) die dann 8 - einen Fehler aus 9 RAISE_APPLICATION_ERROR ( - 20001 , ' kann nicht in den Daten Wochenende eingefügt werden! ' ); 10 End IF ; 11. Ende [ trg_test2 ] ;
3, zu verwenden: alte und neue
auslösenden Anweisung | :alt | :Neu |
einfügen | Alle Felder sind null | Die Daten werden einge |
aktualisieren | Wert vor der Aktualisierung | Der aktualisierte Wert |
löschen | Wert vor Löschen | Alle Felder sind null |
. 1 - festgestellt wird: Aktualisieren des ursprünglichen Wertes größer sein muß als 2 anlegen oder Ersetzen Auslöser trg_test3 3. Vor Aktualisierung von COL ON Tabelle 4. Für jede Zeile . 5 den Beginn 6. IF : old.col > : new.col die dann . 7 RAISE_APPLICATION_ERROR ( - 20002 , ' aktualisierten Werte kleiner als der ursprüngliche Wert kann nicht aktualisiert werden! ' ); . 8 End IF ; . 9 End [ trg_test3 ] ;