2015-05-21 41 views
2
create 
definer ='root'.'localhost' 
trigger 'maria'.'profesori' 
before insert on 'maria'.'profesori' 
for each row 
begin 
declare mesaj varchar (150); 
if new.nume='Tudor' then 
set mesaj='eroare'; 
signal sqlstate'4500' set message_text=mesaj; 
end if; 
end $$;' 

但我不斷收到此錯誤信息:ERROR 1064(42000):你在你的SQL語法錯誤,而試圖創建觸發器

ERROR 1064(42000):您有一個錯誤在你的SQL語法中;檢查手冊, 對應於您的MySQL服務器版本的正確語法使用附近'; 在線路創建 定義器= '根' '本地主機' 觸發「Maria的安裝O '之前profesori' 」 1

+0

我認爲問題出在這之前。錯誤消息在'create'之前顯示';'。 – Barmar

+1

您可能忘記在語句之後放置'$$'。 – Barmar

+1

之前創建我有mysql>使用瑪麗亞 數據庫中更改 的mysql>分界$$ 的mysql>使用瑪麗亞$$ 數據庫中更改 是不是缺少點什麼? – user3605829

回答

1

嘗試:。

create 
definer ='root'@'localhost' 
trigger `maria`.`profesori` 
before insert on `maria`.`profesori` 
for each row 
begin 
declare mesaj varchar (150); 
if new.nume='Tudor' then 
set mesaj='eroare'; 
signal sqlstate'4500' set message_text=mesaj; 
end if; 
end $$ 
  1. 該定義器應形式爲[email protected],而不是user.host
  2. 數據庫,觸發器和表名應使用反引號引用,而不是單引號(或者根本不引用 - 只有在保留字或包含特殊字符時才需要引用)。
  3. $$之後的;可能是一個問題。
-2

change: signal sqlstate'4500'set message_text = mesaj; 對此: 信號sqlstate'45000'設置message_text = mesaj;

相關問題