2009-08-28 25 views

回答

50

它將語句分隔符從;更改爲//。這樣你就可以在你的觸發器定義中寫入;而不會導致MySQL客戶端誤解了你的意思。

請注意,改變回來時,它是DELIMITER ;,而不是DELIMITER;,正如我見過人們試圖做的那樣。

+0

是mysql語法還是mysql shell命令? – nafg 2015-02-04 09:42:09

+0

mysql shell命令 – 2015-04-12 05:41:35

13

在SQL中,用分隔符(默認分號(;))關閉每條語句。在觸發器中,您需要編寫多個語句,每個語句以分號結尾。爲了告訴MySQL這些分號不是觸發器語句的結尾,你暫時將分隔符從;到//,所以MySQL會知道觸發器語句只有在econunter //時纔會結束。

1

閱讀(ummmm)mysql documentation

delimiter是您發送給mysql命令行客戶端的每個命令結束的標記。

delimiter不僅與觸發器有關,而且定義觸發器和存儲過程是一個強大的用例,因爲您希望它們包含分號(;),否則這些分號是默認的delimiter

1

簡單設置語句分隔符的結尾(;標準默認SQL中的分號)。 如果您想在SQL中使用;,或者您正在使用嵌入式SQL(可能導致混淆),更改字符可能會很有用。同樣,在你的例子中//可能會導致嵌入式SQL產生混淆,或者你可能想在你的SQL中使用它。所以暗示使用DELIMITER來設置適合您的應用程序和需要的分隔符。

0

添加例子:
當使用mysql shell命令時,我們使用;分隔符關閉每個語句。但是,如果我們想要構建存儲過程和觸發器,則還需要在這些語句中添加分號;

> delimiter // 
> create trigger log_students after insert on students 
> for each row 
> begin 
> insert into log_students(change_by, change_at) values(USER(), NOW()); 
> end// 
> delimiter ; 
相關問題