mysq进阶
學習資料:
官方文檔:http://dev.mysql.com/doc/refman/5.0/en/tutorial.html
1.存儲過程:
優點:業務邏輯封裝在存儲過程中,容易維護,執行效率也高。
缺點:不同的數據庫功能函數等不一樣,移植的時候需要改動。
create procedure 存儲過程名字()
(
?? [in|out|inout] 參數 datatype
)
begin
?? MySQL 語句;
end;
栗子:
DELIMITER// create procedure pr_add (a int,b int ) begindeclare c int; //后加DEFAULT賦默認值,SET 賦值,存儲過程的參數不能指定默認值if a is null thenset a = 0;end if;if b is null thenset b = 0;end if;set c = a + b;select c as sum; END//注意:與sqlserver不同的是,沒有加DELIMITER// 和 END//無法執行
調用存儲過程:
call pr_add(10, 20);
或者
set @a = 10;set @b = 20;
call pr_add(@a, @b);
關鍵字:
IF THEN、ELSEIF、ELSE、END IF
name:LOOP 、END LOOP name
WHILE DO、END WHILE
REPEAT、UNTILL ... END REPEAT
2.自定義函數
mysql>DEMILITER $$
?3.
自定義觸發器:當一陣表插入數據時,另一張表同步更新,并且自增id。
DROP TRIGGER IF EXISTS t_afterinsert_on_kd_files;
CREATE TRIGGER t_afterinsert_on_kd_files
AFTER INSERT ON kd_files
FOR EACH ROW
BEGIN
if new.in_recycle=0 then
SET @VAR= (select max(id)+1 from kd_files_es)+1;
#insert into kd_files_es_test(file_id,uid,file_name,file_ext,kf_id,file_size,mtime) select new.file_id,new.uid,new.file_name,new.file_ext,new.kf_id,new.file_size,new.mtime FROM kd_files LIMIT 1;
INSERT into kd_files_es set id=@VAR,file_id=new.file_id,uid=new.uid,file_name=new.file_name,file_ext=new.file_ext,kf_id=new.kf_id,file_size=new.file_size,mtime=new.mtime,tag=1;
end IF;
END;
轉載于:https://www.cnblogs.com/flyingbee6/p/5248494.html
總結
- 上一篇: Linux面试题附答案
- 下一篇: EasyCVR通过国标GB28181协议