2013-04-06 70 views
0

我試圖在MYSQL 5.0.95中作出一個觸發器,防止在電子郵件字段中找不到@符號時發生插入。我知道還有比觸發這樣其他的其他方式,但我真的想學習如何觸發工作MYSQL觸發器將不會被創建,由於錯誤

CREATE TRIGGER triggerUsersEmail 
BEFORE INSERT ON Users 
FOR EACH ROW 
BEGIN 
IF (Users.email NOT LIKE '%@%') THEN 
DECLARE dummy INT; 
SELECT not a valid email address INTO dummy FROM Users WHERE 1=1 
END IF; 
END;$$ 

我運行上面的$$在phpMyAdmin的分隔符,但我得到這個錯誤:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE dummy INT; SELECT not a valid email address INTO dummy FROM Users WHERE' at line 6 

回答

0

你試過這個嗎?

 

    CREATE TRIGGER triggerUsersEmail 
    BEFORE INSERT ON Users 
    FOR EACH ROW 
    BEGIN 
    DECLARE dummy INT; 
    IF (Users.email NOT LIKE '%@%') THEN 
    SELECT not a valid email address INTO dummy FROM Users WHERE 1=1 
    END IF; 
    END;$$ 

開始後聲明變量。

_ _編輯

 
DELIMITER $$ 
CREATE TRIGGER triggerUsersEmail 
BEFORE INSERT ON users 
FOR EACH ROW 
BEGIN 
    DECLARE dummy INT; 

    IF (Users.email NOT LIKE '%@%') THEN 
     SELECT "not a valid email address" INTO dummy FROM Users WHERE 1=1; 
    END IF; 
END; 

$$ 

這個工作對我的服務器現在

+0

我得到「#1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊爲正確的語法使用附近'電子郵件地址INTO虛擬從用戶WHERE 1 = 1 END IF; END'在第7行「 – Macmee 2013-04-06 14:52:08

+0

其實我沒有得到你想要的這個選擇查詢。它似乎很錯誤:)你能分享你的用戶表,並告訴我們你想要做什麼 – 2013-04-06 14:59:11

+0

MYSQL 5.0沒有信號,所以我試圖通過拋出我自己的錯誤來阻止INSERT發生。即使我將「SELECT not a valid email address INTO dummy FROM Users WHERE 1 = 1」更改爲「SET NEW.email ='[email protected]'」這樣的有效內容,它仍然會引發同樣的錯誤。我的用戶表是http://pastebin.com/Nvtx9Vhy – Macmee 2013-04-06 15:06:53