Rumah  >  Artikel  >  pangkalan data  >  Mari kita bincangkan tentang pencetus pangkalan data MYSQL

Mari kita bincangkan tentang pencetus pangkalan data MYSQL

WBOY
WBOYke hadapan
2022-04-12 18:23:031756semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang mysql, yang terutamanya memperkenalkan isu berkaitan tentang pencetus, termasuk apakah pencetus, cara mencipta pencetus dalam pangkalan data, dan pencetus Mari kita lihat sama ada peranti boleh menggantikan kunci asing Saya harap ia akan membantu semua orang.

Mari kita bincangkan tentang pencetus pangkalan data MYSQL

Pembelajaran yang disyorkan: tutorial video mysql

Mula-mula faham pencetus, dan kemudian bincangkan sama ada ia boleh menjadi sepenuhnya Daripada kunci asing

Apakah pencetus?

Konsep: Pencetus ialah kaedah yang disediakan oleh pelayan SQL kepada pengaturcara dan penganalisis data untuk memastikan integriti data Ia berkaitan dengan peristiwa jadual tidak dipanggil oleh program atau dimulakan secara manual, tetapi dicetuskan oleh peristiwa Contohnya, apabila jadual dikendalikan (masukkan, padam, kemas kini), pelaksanaannya diaktifkan. Pencetus sering digunakan untuk menguatkuasakan kekangan integriti data dan peraturan perniagaan. Pencetus boleh didapati dalam kamus data DBA_TRIGGERS dan USER_TRIGGERS. Pencetus SQL3 ialah pernyataan yang boleh dilaksanakan secara automatik oleh sistem untuk mengubah suai pangkalan data.

  • Dalam istilah awam, pencetus ialah peranti pencetus dan terdapat operasi yang disimpan dalam peranti. Peranti ini mempunyai syarat pencetus Apabila syarat tertentu dipenuhi, peranti akan dicetuskan dan peranti pencetus akan melaksanakan operasi yang disimpan.

Cara mencipta pencetus dalam pangkalan data

Buat contoh pencetus (kata kunci: pencetus)

Contoh 1: Buat jadual pengguna (ID pengguna, nama pengguna) dan 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)
);

Mari kita bincangkan tentang 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)
Mari kita bincangkan tentang pencetus pangkalan data MYSQL
Kesan: Masukkan tiga nama pengguna ke dalam jadual dan jana tiga secara automatik ID

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

Mari kita bincangkan tentang pencetus pangkalan data MYSQL
Contoh 2: Cipta jadual pesanan DD (ID pesanan, nama produk, ID pengguna) dan buat pencetus tq1 (apabila Apabila a pengguna dipadamkan, pesanan pengguna juga akan dipadamkan)
Buat jadual

create table DD(
ddid int PRIMARY KEY,
ddname VARCHAR(20),
userid VARCHAR(50)
)

Mari kita bincangkan tentang pencetus pangkalan data MYSQL
Buat pencetus

delimiter $
-- 建立触发器名为tq
create TRIGGER tq1
-- 触发条件,再dd表删除数据之后启动触发器
AFTER DELETE on user
-- 检查表中每一行,对新插入的数据进行操作
for EACH ROW
-- 执行操作
BEGIN  
DELETE FROM dd WHERE old.id=userid;
END $ 
delimiter ;

Mari kita bincangkan tentang pencetus pangkalan data MYSQL
Tambahkan dua keping data pada jadual
Mari kita bincangkan tentang pencetus pangkalan data MYSQL

Kesan: Padamkan jadual pengguna Untuk pengguna, pencetus juga boleh memadam rekod dalam jadual dd
Padam Zhang San

delete from user WHERE name='张三'

Mari kita bincangkan tentang pencetus pangkalan data MYSQL
Mari kita bincangkan tentang pencetus pangkalan data MYSQL

Boleh ia menggantikan kunci asing sepenuhnya?

  • Jika contoh 2 di atas boleh mencapai kesan yang sama dengan kunci asing, adakah ini bermakna kunci asing boleh melakukannya, pencetus boleh melakukannya dan kunci asing boleh melakukannya . Bolehkah ia dilakukan dengan kurang daripada pencetus?
  • Berbanding dengan kunci asing, pencetus mempunyai fleksibiliti yang lebih tinggi dan lebih banyak fungsi, dan boleh melakukan lebih banyak fungsi Pada tahap tertentu, pencetus boleh menggantikan kunci asing dan merealisasikan fungsi kunci asing.
  • Pencetus juga boleh digunakan untuk menguatkuasakan integriti rujukan supaya apabila baris ditambah, dikemas kini atau dipadamkan dalam berbilang jadual, perhubungan yang ditakrifkan antara jadual tersebut dikekalkan. Walau bagaimanapun, cara terbaik untuk menguatkuasakan integriti rujukan adalah dengan menentukan kekangan kunci utama dan kunci asing dalam jadual berkaitan. Jika anda menggunakan gambar rajah pangkalan data, anda boleh mencipta perhubungan antara jadual untuk mencipta kekangan kunci asing secara automatik.

Ringkasan: Pencetus boleh menggantikan kunci asing dalam beberapa kes, tetapi tidak dalam semua situasi. Kekunci dan pencetus asing juga boleh digunakan bersama

Pembelajaran yang disyorkan: tutorial video mysql

Atas ialah kandungan terperinci Mari kita bincangkan tentang pencetus pangkalan data MYSQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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