有两个表 books , books_log. 都有字段bname,要求当books表中bname的字段发生变化时 books_log中的bname也要同步改变。
写了个触发器报错,请高手指点。
DELIMITER $$
CREATE
   
    TRIGGER `TRG_EDIT_BOOK` UPDATE
    ON `books`
    FOR EACH ROW
 BEGIN
  IF NEW.bname <> OLD.bname
      THEN
        update books_log set bname=new.bname where id=old.id;
END IF;
    END$$
DELIMITER ;
错误码: 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 'UPDATE
    ON `books`
    FOR EACH ROW
 BEGIN
  IF NEW.bname != OLD.bname
      ' at line 3Execution Time : 00:00:00:000
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:000

解决方案 »

  1.   

    CREATE TRIGGER `TRG_EDIT_BOOK` after UPDATE
      ON `books`
      FOR EACH ROW
     BEGIN
      IF NEW.bname <> OLD.bname THEN 
      update books_log set bname=new.bname where id=old.id;
    END IF;
      END$$
    DELIMITER ;
      

  2.   

    语法都搞错啦,哥们。DELIMITER |
     
    CREATE TRIGGER testref BEFORE INSERT ON test1
      FOR EACH ROW BEGIN
        INSERT INTO test2 SET a2 = NEW.a1;
        DELETE FROM test3 WHERE a3 = NEW.a1;  
        UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
      END
    |
     
    DELIMITER ;
      

  3.   

    delimiter $$
    CREATE TRIGGER `TRG_EDIT_BOOK` after UPDATE ON `books` FOR EACH ROW
     BEGIN
      IF NEW.bname <> OLD.bname THEN  
      update books_log set bname=new.bname where id=old.id;
      END IF;
      END$$
    DELIMITER ;
      

  4.   

    DELIMITER $$
    CREATE TRIGGER `TRG_EDIT_BOOK` BEFORE UPDATE
    ON `books`
    FOR EACH ROW
    BEGIN
    IF NEW.bname <> OLD.bname THEN
    update books_log set bname=new.bname where id=old.id;
    END IF;
    END$$
    DELIMITER ;
      

  5.   

    建议可以参考一下手册中的语法说明。
    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html