Oracle Trigger Entwicklung

Achten Sie auf die Entwicklung des Triggerpunkt

  1. Trigger keine Parameter erhalten
  2. Je mehr sich der Auslöser, die die Betriebsleistung von DML senken
  3. Auslöser maximal 32k, wenn PL / SQL-Anweisung zu viel, können Sie gespeicherte Prozeduren, Trigger Aufruf
  4. 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)
  5. 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
  6. Trigger Körper jede lange nicht erklären kann und Variablen Blog ,: neue und: alte Tabelle kann nicht lange Spalte oder ein Blog sein
  7. 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 ] ;

 

Ich denke du magst

Origin www.cnblogs.com/cnblogs-syui/p/12511249.html
Empfohlen
Rangfolge