有關mysql觸發器的感悟 關於MySQL的觸發器

2021-10-19 03:48:26 字數 1762 閱讀 1580

mysql操作

修改mysql的結束符

有時候在使用乙個特殊sql的時候需要使用;,但是;在mysql中會被當做結束符,這樣我們就需要臨時修改mysql中的結束符。

delimiter $ ##他的含義就是使用$ 替換 ;

舉個例子 :select * from user$ ##這樣就表示語句的結束。

delimiter ; ### 使用這個兩個語句包裹起來 這樣裡面的;就不會當做結束符。

mysql的觸發器

觸發器(trigger):監視某種情況,並觸發某種操作

觸發器建立語法四要素:

1.監視地點 (table)

2.監視事件(insert,delete,update)

3.觸發時間(after,before)

4.觸發事件(insert,delete,update)

mysql的觸發器例子。

delimiter $

create trigger update_client_after

after update

on client_grade

for each row

begin

if(old.gradec!='n') then

update sku set c=12 where shopid=old.shopid;

end if;

end$

delimiter ;

以上就是建立乙個簡答的觸發器。update_client_after是觸發器的名字。after update指的是觸發時間,on client_grade指的是對這張表的監聽。for each row是指每操作一行都會觸發。begin表示的是觸發後的操作。使用end結束。上面的例子包含了乙個if判斷。

關於觸發時間after與before中的old 和new的使用。

after的意思是先完成資料的增刪改,然後再觸發,觸發的語句晚於監視的增刪改,無法影響前面的增刪改動作。不能對new進行操作。

before的意思是先觸發在進行資料的增刪改。可以根據觸發後的結果完成資料操作。(insert、 update)可以對new操作。

都不能對old操作。

對於觸發器內部操作的約束:對於insert操作,只有對new 是合法的,對於delete操作,只有對old操作是合法的,在update語句中可以同時操作new和old。這個很容易理解咯。

mysql的儲存過程

delimiter $

create procedure updateds(in shopid int)

begin

declare done int default 0;

declare a int;

declare ids int;

declare cur cursor for select id,b from sku where shopid=shopid;

declare continue handler for sqlstate '02000' set done = 1;

open cur;

repeat -- 迴圈

fetch cur into ids,a;

if not done then

update sku set c=a where id=ids;

end if;

until done end repeat;-- 結束迴圈

close cur;-- 這個語句關閉先前開啟的游標。

end$

delimiter ;

儲存過程的例子。

關於Mysql 觸發器

首先,測試版本 mysql 5.6。然後再看觸發器的語法 create definer triggertrigger name trigger timetrigger event ontbl namefor each row trigger body trigger time trigger eve...

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...

mysql觸發器的要素 MySQL觸發器

觸發器是一類特殊的事務,可以監視某種資料操作 insert,update,delete 並觸發相關操作 insert,update,delete 觸發器建立之四要素 監視地點 table 監視事件 insert,update,delete 觸發時間 after,before 觸發事件 insert,...