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除非列不相同,否則所有行將被檢索出來,即不能對...