1. 程式人生 > >10.子程式的高階特性1

10.子程式的高階特性1

來源:網易雲課堂《精通MySQL儲存過程、函式和觸發器》課程

講師:huangxifeng607(黃錫峰)

筆記:

(1)DETERMINISTIC特性

delimiter $$
create procedure testa()
not deterministic
begin
	declare my_uid int default 0;
	select uid into my_uid from hxf where salary<3000 limit 1;
	update user set regtime=now() where uid=my_uid;
end;
$$
delimiter;

1.deterministic的含意指的是什麼?

not deterministic說明子程式包含了不確定的函式等

2.類似的儲存過程和函式高階特性還有:

{contains sql | no sql | reads sql data | modifies sql data}

(2)儲存過程與DETERMINISTIC特性對複製的影響

delimiter $$
create procedure testa()
not deterministic | deterministic
begin
	declare my_uid int default 0;
	select uid into my_uid from hxf where salary<3000 limit 1;
	update user set regtime=now() where uid=my_uid;
end;
$$
delimiter;

1.儲存過程執行的語句在二進位制日誌中體現,複製保證精確性(對複製沒有影響)

(3)儲存過程對其它高階特性對複製的影響測試

其它特性:{contains sql | no sql | reads sql data | modifies sql data} 與儲存過程也無相關性測試

contains sql:包括讀與寫的sql

no sql:不包含sql

reads sql data:只包含讀的sql

modifies sql data:只包含寫的sql

mysql 5.6版本之後,沒有影響,以前的版本需要精確指定高階特性

(4)小結

1.子程式的高階特性有哪些

2.子程式的高階特性deterministic對儲存過程的影響

儲存過程與高階特性的關係是無關性的