Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk mencipta pencetus pangkalan data MySQL

Bagaimana untuk mencipta pencetus pangkalan data MySQL

WBOY
WBOYke hadapan
2023-05-31 19:31:354526semak imbas

Apakah pencetus?

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.

Cara membuat pencetus dalam pangkalan data

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)
);

Bagaimana untuk mencipta pencetus pangkalan data MySQL

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)

Bagaimana untuk mencipta pencetus pangkalan data MySQL

Kesan: Masukkan tiga nama pengguna ke dalam jadual , secara automatik menjana tiga ID

insert user(name) VALUE('张三'),('李四'),('王五')

Bagaimana untuk mencipta pencetus pangkalan data MySQL

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)
)

Bagaimana untuk mencipta pencetus pangkalan data MySQL

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 ;

Bagaimana untuk mencipta pencetus pangkalan data MySQL

Tambah dua kepingan data ke jadual

Bagaimana untuk mencipta pencetus pangkalan data MySQL

Kesan: Padam pengguna dalam jadual pengguna, dan rekod dalam jadual dd juga akan dipadamkan Zhang San

delete from user WHERE name='张三'

Bagaimana untuk mencipta pencetus pangkalan data MySQL

Bagaimana untuk mencipta pencetus pangkalan data MySQL

Bolehkah pencetus menggantikan sepenuhnya kunci asing?

  • 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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam