亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql觸發器(trigger)

發布時間:2020-05-30 01:48:06 來源:網絡 閱讀:669 作者:梧桐深院 欄目:MySQL數據庫

觸發器的作用

監聽數據的變化,以實現當數據變化時的關聯操作,不過感覺沒有實際作用,觸發器的功能如果用代碼邏輯來控制感覺會更正規些,畢竟團隊中的其它人不一定會看到你定義的觸發器,但一定能看到你的代碼。那為何還要學習觸發器,有些知識不是為自己學的,你不用,你不敢保證別人不用。如果別人用了,我們對此一無所知,那么會給程序的維護帶來很大的困難。

觸發器的定義

格式:create trigger 觸發器名稱 事件 on 表名 執行代碼

事件:

  • 插入 insert
  • 刪除 delete
  • 修改 update

時機:

  • 前 before
  • 后 after

事件與時機組合共有六種情況

  • before insert
  • after insert
  • before delete
  • after delete
  • before update
  • after update

創建語法

delimeter $ // 修改語句結束符,避免和定義trigger中的語句沖突

create trigger triggerName
after/before insert/update/delete on 表名
for each row // 這一行是固定的
begin
sql語句 // 一條或多條sql語句,一條sql語句也可省略begin 和 end
end;

delimeter ; // 改回正常的結束符

new / old

如果在trigger內部需要使用觸發trigger那行記錄中的值,那么new代表新行,old代表舊行。也就是說 old / new 分別代表事件發生 前 / 后該行記錄。是一整行,而不是某個字段。

*注意: insert 操作沒有old,delete 操作沒有new

觸發器的管理

刪除

drop trigger trigger_name

查看所有觸發器

show triggers;

示例

假設我們有一張班級表

id class_name num
1 001 1
2 002 1
3 003 0

還有一張學生表

id name class_id
1 xiaohong 1
2 xiaogang 2

我們定義一個觸發器,每當增加一名學生,對應班級表中的學生數量num就加一。

delimiter $$
create trigger zhaosheng after insert on student 
for each row
begin
update class set num=num+1 where id=new.class_id;
end;
$$
delimiter ;

看效果:
mysql觸發器(trigger)

當增加一個學生zhangsan后,calss表中對應的id為3的num自動增加1。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

资溪县| 文昌市| 苏尼特左旗| 城市| 宁明县| 大方县| 澄迈县| 无极县| 关岭| 天等县| 永济市| 阳曲县| 仁布县| 乐安县| 永仁县| 婺源县| 嵩明县| 安远县| 佛教| 利津县| 若尔盖县| 绥芬河市| 新民市| 姜堰市| 赫章县| 军事| 喀喇沁旗| 东阳市| 鄂尔多斯市| 乐陵市| 九江县| 项城市| 宜都市| 青田县| 乌兰浩特市| 故城县| 西吉县| 遂溪县| 台前县| 军事| 卢氏县|