8.MYSQL:触发器的使用[TRIGGER]
觸發(fā)器是一種特殊的存儲過程,它在插入,刪除或者修改特定表中的數(shù)據(jù)時觸發(fā)執(zhí)行,它比數(shù)據(jù)庫本身標(biāo)準(zhǔn)的功能有更精細(xì)和更復(fù)雜的數(shù)據(jù)控制能力。
它具有這樣的特征:
監(jiān)視地點(diǎn):一般就是表名
監(jiān)視事件:update/delete/insert
觸發(fā)時間:after/before
觸發(fā)事件:update/delete/insert
說得直白一點(diǎn)就是,當(dāng)對一個表進(jìn)行update/delete/insert等操作的時候,設(shè)置觸發(fā)器就是同步對其他表進(jìn)行控制操作
觸發(fā)器不能直接被調(diào)用,是由數(shù)據(jù)庫主動執(zhí)行。
?
example1:
創(chuàng)建表tab1
DROP TABLE IF EXISTS tab1;CREATE TABLE tab1(tab1_id varchar(11));創(chuàng)建表tab2
DROP TABLE IF EXISTS tab2;CREATE TABLE tab2(tab2_id varchar(11));創(chuàng)建觸發(fā)器:t_afterinsert_on_tab1
作用:增加tab1表記錄后自動將記錄增加到tab2表中
DROP TRIGGER IF EXISTS t_afterinsert_on_tab1;CREATE TRIGGER t_afterinsert_on_tab1 AFTER INSERT ON tab1FOR EACH ROWBEGINinsert into tab2(tab2_id) values(new.tab1_id);END;測試一下
INSERT INTO tab1(tab1_id) values('0001');?
看看結(jié)果
SELECT * FROM tab1;SELECT * FROM tab2;example2:
創(chuàng)建觸發(fā)器:t_afterdelete_on_tab1
作用:刪除tab1表記錄后自動將tab2表中對應(yīng)的記錄刪去
DROP TRIGGER IF EXISTS t_afterdelete_on_tab1;CREATE TRIGGER t_afterdelete_on_tab1AFTER DELETE ON tab1FOR EACH ROWBEGINdelete from tab2 where tab2_id=old.tab1_id;END;測試一下
DELETE FROM tab1 WHERE tab1_id='0001';?
看看結(jié)果
SELECT * FROM tab1;SELECT * FROM tab2;總結(jié)一下:
1)對于insert,用new表示插入后的行,new.字段名 表示對應(yīng)行的某一列;
2)對于delete,被刪除的行用old表示,old.字段名表示對應(yīng)行的某一列;
3)對于update,修改前old,修改后new;
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的8.MYSQL:触发器的使用[TRIGGER]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指offer:在一个排序的链表中,存在
- 下一篇: 剑指offer:把只包含质因子2、3和5