1. 程式人生 > >MySQL的觸發器建立之注意事項(有關delimiter)

MySQL的觸發器建立之注意事項(有關delimiter)

今天晚上在自己的資料庫上做了一個觸發器。由於自己之前是使用SQL Server2005學習SQL語句的,所以在這個簡單的觸發器設計出現了一些自己意想不到的BUG。現在我來簡單的說一下:

這裡使用到 diary表、comments表和favour表。建立觸發器語句是這樣的:

create trigger delete_diary_tri
before delete on diary
for each row begin
	delete from comments where comments.did = old.did;
end;

結果一直報錯:

發現了 delimiter 的作用與重要之處:

預設情況下,delimiter “;” 用於向 MySQL 提交查詢語句。在儲存過程中每個 SQL 語句的結尾都有個 “;”,如果這時候,每逢 “;” 就向 MySQL 提交的話,當然會出問題了。於是更改 MySQL 的 delimiter,上面 MySQL 觸發器程式設計這樣子了:

delimiter $$
create trigger delete_diary_tri
before delete on diary
for each row begin
	delete from comments where comments.did = old.did;
end $$
delimiter ;

成功執行!