触发器截断不正确的DOUBLE值

时间:2016-04-11 22:08:49

标签: mysql sql triggers

我想要做的就是在historique Table的message列中包含mcorr表中的OLD.codeMaint变量。 但是当我尝试修改表时,我得到的就是这个错误:

Truncated incorrect DOUBLE value: 'MC35'.

btw MC35是我要修改主键的行

这是我的触发码

 DELIMITER @@
DROP TRIGGER IF EXISTS after_update_mcorr @@
CREATE TRIGGER gmtt.after_update_mcorr
AFTER UPDATE ON gmtt.mcorr
FOR EACH ROW
BEGIN
   IF OLD.etat = '0' AND NEW.etat = '1' THEN
        INSERT INTO historique(message, User, dateHisto) VALUES ( 'a achevé la Maintenance '+ OLD.codeMaint , CURRENT_USER(), NOW()); 
   END IF;

END @@ 
DELIMITER ;

2 个答案:

答案 0 :(得分:2)

在MySQL中,使用concat()来连接字符串:

DELIMITER @@
DROP TRIGGER IF EXISTS after_update_mcorr @@

CREATE TRIGGER gmtt.after_update_mcorr
AFTER UPDATE ON gmtt.mcorr
FOR EACH ROW
BEGIN
   IF OLD.etat = '0' AND NEW.etat = '1' THEN
        INSERT INTO historique(message, User, dateHisto)
            VALUES (CONCAT('a achevé la Maintenance ', OLD.codeMaint), CURRENT_USER(), NOW()
                   ); 
   END IF;

END @@ 

DELIMITER ;

答案 1 :(得分:0)

Mysql不识别+作为字符串连接运算符。使用concat()函数或者如果启用pipes_as_concat sql模式,则可以使用||运算符来连接字符串。