Dalam Oracle, pencetus secara automatik melaksanakan pernyataan yang ditentukan apabila syarat yang ditentukan dipenuhi Ia ditulis sebagai "buat [atau gantikan] peristiwa pencetus masa pencetus nama pada nama jadual [untuk setiap baris] mula pl. /sql pernyataan tamat".
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.
1 Pengenalan kepada pencetus
Takrif pencetus bermaksud apabila keadaan tertentu ditetapkan, Pernyataan tersebut yang ditakrifkan dalam bekas akan dilaksanakan secara automatik.
Oleh itu, pencetus tidak perlu dipanggil secara manual dan tidak boleh dipanggil.
Kemudian, keadaan pencetus pencetus sebenarnya ditetapkan apabila anda mentakrifkannya.
Perlu diterangkan di sini bahawa pencetus boleh dibahagikan kepada pencetus peringkat pernyataan dan pencetus peringkat baris.
Untuk pengenalan terperinci, sila rujuk maklumat di Internet Ringkasnya, pencetus peringkat kenyataan boleh dicetuskan sebelum atau selepas pelaksanaan kenyataan tertentu. Pencetus peringkat baris dicetuskan sekali apabila data baris dalam jadual pencetus yang ditentukan berubah.
Contoh khusus:
1 Pencetus peringkat penyataan yang ditakrifkan dalam jadual Apabila jadual dipadamkan, program akan melaksanakan proses operasi yang ditakrifkan dalam pencetus. Ini bermakna bahawa operasi memadam jadual adalah syarat untuk pelaksanaan pencetus.
2. Pencetus peringkat baris ditakrifkan dalam jadual Apabila baris data dalam jadual berubah, seperti memadamkan baris rekod, pencetus akan dilaksanakan secara automatik.
2. Sintaks Pencetus
Sintaks Pencetus:
create [or replace] tigger 触发器名 触发时间 触发事件 on 表名 [for each row] begin pl/sql语句 end
Antaranya:
Pencetus nama: Nama objek pencetus. Oleh kerana pencetus dilaksanakan secara automatik oleh pangkalan data, nama itu hanyalah nama dan tidak mempunyai tujuan sebenar.
Masa pencetus: Nyatakan bila pencetus dilaksanakan Nilai boleh diterima:
sebelum: Menunjukkan bahawa pencetus dilaksanakan sebelum pangkalan data. tindakan;
selepas: Menunjukkan bahawa pencetus dilaksanakan selepas tindakan pangkalan data.
Peristiwa pencetus: Nyatakan tindakan pangkalan data yang akan mencetuskan pencetus ini:
sisipan: Sisipan pangkalan data akan mencetuskan pencetus ini; >
Fungsi:
2 jana lajur terbitan, seperti medan kenaikan automatik
3. Kuatatkan ketekalan data
4. Menyediakan pengauditan dan pengelogan
5 >6. Dayakan logik perniagaan yang kompleks
Contoh
1) Pencetus berikut dicetuskan sebelum mengemas kini jadual tb_emp, untuk tidak membenarkan jadual diubah suai pada hujung minggu:
2) Gunakan pencetus untuk melaksanakan kenaikan automatik nombor siri Buat jadual ujian:Buat urutan:
create or replace trigger auth_secure before insert or update or DELETE on tb_emp begin IF(to_char(sysdate,'DY')='星期日') THEN RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表tb_emp'); END IF; END; /
Buat pencetus:
create table tab_user( id number(11) primary key, username varchar(50), password varchar(50) );
Masukkan data ke dalam jadual:
Hasil jadual pertanyaan: SELECT * FROM TAB_USER;create sequence my_seq increment by 1 start with 1 nomaxvalue nocycle cache 20;
Tutorial yang disyorkan: "
Tutorial Video OracleCREATE OR REPLACE TRIGGER MY_TGR BEFORE INSERT ON TAB_USER FOR EACH ROW--对表的每一行触发器执行一次 DECLARE NEXT_ID NUMBER; BEGIN SELECT MY_SEQ.NEXTVAL INTO NEXT_ID FROM DUAL; :NEW.ID := NEXT_ID; --:NEW表示新插入的那条记录 END;
Atas ialah kandungan terperinci Bagaimana untuk menulis pencetus oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!