mysql 必知必會 (25觸發器)之把書讀薄

2021-08-18 22:43:08 字數 1320 閱讀 4025

25 使用觸發器(表才支援觸發器,檢視不支援)

為什麼使用觸發器:

某個表發生改動時自動處理

什麼是觸發器?

mysql響應以下任意語句而自動執行的一條mysql語句

(或位於begin和end語句之間的語句):

觸發器只支援:   delete   insert    update  

建立觸發器 create trigger

唯一名字 關聯的表 響應活動

何時執行

create trigger newproduct    ---- 名字

after  ---操作發生之後

insert  on products  -

for each row  --插入行執行

select 『producted add』;   ---每插入成功一次顯示一次

觸發器按每個表每個事件每次地定義,每個表每個事件每次只允許乙個觸發器,因此每個表最多支援6個觸發器(insert  update  delete的之前之後),單一觸發器不能與多個事件或多個表關聯,所以你需要乙個對inset和update操作執行的觸發器,則應該定義兩個觸發器。

觸發器失敗:

before失敗,msyql將不執行請求

before或語句本身失敗,mysql將不執行after觸發器(若有的話)

insert觸發器: 使用new的虛擬表:

create trigger neworder

after

insert on orders

for each row

select new.order_num;

delete觸發器

引用乙個old的虛擬表,訪問被刪除的行,old中的值只能讀,不能更新

create trigger deleteorder

before delete on orders

for each row

begin

insert into archive_orders(order, order_date, cust_id)

values(old.order_num, old.order_date, old.cust_id);

end;

update觸發器:

引用乙個old的虛擬表訪問(update語句前)的值

引用乙個new的虛擬表訪問新更新值

create trigger updatevendor

before update on vendors

for each row

set new.vend_state = upper(new.vend_state)

MySQL必知必會 第25章 使用觸發器

1.1 版本支援 mysql5以及之後版本 1.2 定義 觸發器是mysql響應以下任意語句,自動執行的位於begin 和 end之間的一組sql語句 1 insert 2 delete 3 update 以上都是針對表內容的操作,檢視和臨時表都不支援觸發器 其他mysql語句不支援觸發器 2.1 ...

mysql必知必會 mysql必知必會(四)

十四 理解子查詢 1 通過子查詢過濾 這本書在所有的章節都關連到了資料庫表,訂單資料是儲存在兩個表中,orders表儲存著 訂單號碼 顧客id和訂單日期。個人的訂單列表關連著orderitems表,訂單表沒有儲存顧客資訊,它只是儲存著顧客id,這實際的顧客資訊是儲存在customers表中。現在假設...

mysql的必知必會 mysql 必知必會 筆記

好久沒有寫了。1 show columns from table 等同於describe table顯示的是表的結構。而select from table 則顯示的是整個表中插入的資料。2 select distinct c1,c2 from table除非列不相同,否則所有行將被檢索出來,即不能對...