2014-01-24 45 views
2

之間的文本你好,我有mysql的觸發一個問題:mysql的觸發,新老

DELIMITER $$ 
CREATE TRIGGER update_forum_admin 
    after UPDATE ON sb_admins 
    FOR EACH ROW BEGIN 

    INSERT INTO `mysql_db`.`trigger_log` (`dato`, `trigger`, `status`) VALUES (NOW(), 'update_forum_admin', OLD.user+"="+NEW.user); 
END$$ 
DELIMITER ; 

的問題是關於:

OLD.user+"="+NEW.user 

這樣做的結果就是0,但我想讓它顯示舊的用戶名加上「=」加上新的用戶名。

但是我需要什麼聲明呢?

回答

1

您使用+作爲一個字符串連接運算符,但這是微軟使用的非標準語法不是由MySQL也不在ANSI SQL標準。

MySQL使用函數CONCAT()。例如:

INSERT INTO `mysql_db`.`trigger_log` (`dato`, `trigger`, `status`) 
    VALUES (NOW(), 'update_forum_admin', CONCAT(OLD.user, '=', NEW.user)); 

ANSI SQL(和大多數其他SQL數據庫)使用雙管作爲字符串連接操作:

INSERT INTO `mysql_db`.`trigger_log` (`dato`, `trigger`, `status`) 
    VALUES (NOW(), 'update_forum_admin', OLD.user || '=' || NEW.user); 

但除非你設置SQL mode不要嘗試這種在MySQL到ANSIPIPES_AS_CONCAT。默認情況下,MySQL中的||是邏輯OR的同義詞。

PS:You should use single-quotes for string literals

0

你想concatenate這些值轉換成字符串:

CONCAT(OLD.user, "=", NEW.user)