Mysql 触发器在我的触发器上抛出语法错误

标签 mysql syntax triggers

执行时触发器会抛出以下错误。请帮忙

DELIMITER |
CREATE  TRIGGER `Problem_created` AFTER UPDATE  ON `WorkOrder_Fields` FOR EACH ROW
BEGIN
DECLARE problem_time_stamp   int;


IF   NEW.UDF_CHAR37 ='Problem'  AND  OLD.UDF_CHAR37='Incident'

    THEN

        SET problem_time_stamp    = (SELECT UNIX_TIMESTAMP(now())*1000);

        update workorder_fields set UDF_DATE6=problem_time_stamp    where WORKORDERID=OLD.WORKORDERID ;

    END IF;
END |
DELIMITER ;

================================================== =========================

[root@vmesx42s32 bin]#  mysql -u root -S../tmp/mysql.sock supportcenter
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 263 to server version: 4.1.18-pro

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> DELIMITER |
mysql> CREATE  TRIGGER `Problem_created` AFTER UPDATE  ON `WorkOrder_Fields` FOR EACH ROW
    -> BEGIN
    -> DECLARE problem_time_stamp   int;
    ->
->
    -> IF   NEW.UDF_CHAR37 ='Problem'  AND  OLD.UDF_CHAR37='Incident'

IF   NEW.UDF_CHAR37 ='Problem'  AND  OLD.UDF_CHAR37='Incident'
    ->
 -> THEN
    ->
     ->  SET problem_time_stamp    = (SELECT UNIX_TIMESTAMP(now())*1000);
 ->

        -> update workorder_fields set UDF_DATE6=problem_time_stamp    where WORKORDERID=OLD.WORKORDERID ;
 ->
    -> END IF;
 -> END |
**ERROR 1064 (42000): 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     'TRIGGER `Problem_created` AFTER UPDATE  ON `WorkOrder_Fields` FOR EACH ROW
BEGIN' at line 1**
mysql> DELIMITER ;

最佳答案

您通常不想对触发器正在修改的表进行更新。相反,执行 before insert 触发器并:

IF   NEW.UDF_CHAR37 ='Problem'  AND  OLD.UDF_CHAR37='Incident'
THEN
    SET new.UDF_DATE6 := UNIX_TIMESTAMP(now())*1000);  
END IF;

这假设 WORKORDERID 未更新,但根据其名称,这似乎不太可能。

关于Mysql 触发器在我的触发器上抛出语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28139265/

相关文章:

MySQL 触发器 #1064 语法错误

php - 从 MySQL 数据库检索时间戳值返回当前日期

python - 如何从字典中找到最大值?

使用 use 或 namespace 语句时出现 php 语法错误 : unexpected '/' ,

php - 将所有参数传递给另一个函数

java - Hibernate实体中的复合@NaturalId

导入中受影响的 MYSQL 0 行

mysql - MySQL/myisam 1000万行表18秒处理?

mysql表名长度限制? - 请测试默认的 mysql(2010 年询问 mysql <5.5)

php - 在触发器中使用定界符的 Mysql 错误