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,...