2015-09-04 229 views
0

我想在插入表后运行的mysql中编写触发器。插入后,它从attrValue列中取值,其中attrType等于'datetime',并更新另一列名为attrMd的列。在mysql中插入触发器后

这是我尝试了,但现在它口口声声说我有4行语法值:

1064 - 你在你的SQL语法错误;检查对应于你的MySQL服务器版本的手册,在第4行使用正确的语法'''

我找不出来。任何帮助深表感谢。谢谢...

CREATE TRIGGER upd_check BEFORE INSERT ON def_servpath_0001_weatherstation 
FOR EACH ROW 
BEGIN 
DECLARE someString text; 
FOR EACH ROW 
BEGIN 
    IF NEW.atrType = 'datetime' THEN 
     SET @someString := NEW.atrValue; 
    END IF; 
END; 

FOR EACH ROW 
BEGIN 
    IF NEW.atrType <> 'datetime' THEN 
     SET NEW.atrMD = someString; 
    END IF; 
END; 
END;// 

编辑 Image

+0

我在插入后写入,但是在插入之前写入。对不起...... –

+0

你在哪里运行触发器? mysql cli/phpmyadmin?以及触发器应该做什么,它给出的代码非常混乱。请在其中添加更多信息。 –

+0

我在phpmyadmin上运行它。触发器应该用声明的变量some​​String更新列attrMd。如果满足给定条件,someString会从列attrValue中取值... –

回答

0

几点考虑:

CREATE TRIGGER upd_check BEFORE INSERT ON def_servpath_0001_weatherstation 
FOR EACH ROW 
BEGIN 
DECLARE someString text; 
-- FOR EACH ROW 
BEGIN 
    IF NEW.atrType = 'datetime' THEN 
     SET @someString := NEW.atrValue; 
    END IF; 
END; 

-- FOR EACH ROW 
BEGIN 
    IF NEW.atrType <> 'datetime' THEN 
     SET NEW.atrMD = someString; 
    END IF; 
END; 
END;// 
+0

谢谢你的抬头,它通过了,但它不能正常工作,我会发布图像它应该做什么... –

+0

我张贴图像以更好看... –

+0

我使用两个'对于每一行,因为不知道'atrType ='datetime'是否始终是第一个。 –