Konsep: Pencetus ialah kaedah yang disediakan oleh pelayan SQL kepada pengaturcara dan penganalisis data untuk memastikan integriti data Ia adalah prosedur tersimpan khas yang berkaitan dengan acara jadual. Ia dipanggil oleh program dan tidak dimulakan secara manual, tetapi dicetuskan oleh peristiwa Contohnya, apabila jadual dikendalikan (masukkan, padam, kemas kini), pelaksanaannya akan diaktifkan. Pencetus sering digunakan untuk menguatkuasakan kekangan integriti data dan peraturan perniagaan. Dengan menanyakan kamus data DBA_TRIGGERS dan USER_TRIGGERS, anda boleh mendapatkan maklumat berkaitan pencetus. Pencetus SQL3 ialah pernyataan yang boleh dilaksanakan secara automatik oleh sistem untuk mengubah suai pangkalan data.
Dalam istilah orang awam, pencetus ialah peranti pencetus dan terdapat operasi yang disimpan dalam peranti. Setelah syarat tertentu dicapai, peranti akan dicetuskan dan melakukan tindakan yang disimpan di dalamnya.
Buat contoh pencetus (kata kunci: pencetus)
Contoh 1: Cipta jadual pengguna (ID pengguna, nama pengguna), Buat pencetus (apabila data dimasukkan ke dalam jadual pengguna, ID unik global dijana secara automatik)
Buat jadual pengguna dahulu
create table user( id int PRIMARY KEY, name varchar(20) );
Buat pencetus
-- 建立触发器名为tt create TRIGGER tt -- 触发条件,向user表中插入数据时启动触发器 BEFORE insert on user -- 检查表中每一行,对新插入的数据进行操作 for EACH ROW -- 执行操作 BEGIN set new.id=UUID(); END
Pencetus baru sahaja dibuat (lihat kod menunjukkan pencetus semua pencetus di bawah pangkalan data semasa)
Kesan: Masukkan tiga nama pengguna ke dalam jadual , secara automatik menjana tiga ID
insert user(name) VALUE('张三'),('李四'),('王五')
Contoh 2: Buat jadual pesanan DD (ID pesanan, nama produk, ID pengguna), dan buat pencetus tq1 (apabila dipadamkan Apabila ada adalah pengguna, pesanan pengguna juga akan dipadamkan) Cipta jadual
create table DD( ddid int PRIMARY KEY, ddname VARCHAR(20), userid VARCHAR(50) )
Cipta pencetus
delimiter $ -- 建立触发器名为tq create TRIGGER tq1 -- 触发条件,再dd表删除数据之后启动触发器 AFTER DELETE on user -- 检查表中每一行,对新插入的数据进行操作 for EACH ROW -- 执行操作 BEGIN DELETE FROM dd WHERE old.id=userid; END $ delimiter ;
Tambah dua kepingan data ke jadual
Kesan: Padam pengguna dalam jadual pengguna, dan rekod dalam jadual dd juga akan dipadamkan Zhang San
delete from user WHERE name='张三'
Contoh 2 di atas juga boleh mencapai kesan yang sama jika kunci asing digunakan, jadi adakah ini bermakna pencetus boleh melakukan apa sahaja yang boleh dilakukan oleh kunci asing, dan pencetus yang tidak boleh dilakukan oleh kunci asing juga boleh melakukannya?
Berbanding dengan kunci asing, pencetus mempunyai fleksibiliti yang lebih tinggi dan lebih banyak fungsi, dan boleh melaksanakan lebih banyak fungsi Pada tahap tertentu, pencetus boleh menggantikan kunci asing dan merealisasikan fungsi kunci asing.
Pencetus boleh digunakan untuk menguatkuasakan integriti rujukan, memastikan bahawa apabila baris ditambah, dikemas kini atau dipadamkan dalam berbilang jadual, perhubungan yang ditakrifkan antara jadual ini dikekalkan. Mentakrifkan kunci utama dan kekangan kunci asing ialah cara terbaik untuk memastikan integriti rujukan. Menggunakan gambar rajah hubungan dalam pangkalan data, kekangan kunci asing boleh dibuat secara automatik dengan mewujudkan hubungan antara jadual.
Ringkasan: Pencetus boleh menggantikan kunci asing dalam sesetengah kes, tetapi tidak dalam semua situasi. Kunci asing dan pencetus juga boleh digunakan bersama
Atas ialah kandungan terperinci Bagaimana untuk mencipta pencetus pangkalan data MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!