RT 需要写一个触发器 功能如下:
我有2个表 A 和 B, A中有一个属性叫a,每次A中的数据被更新时,如果A.a的原值不为5而新值为5,那么把A.id的值插到B.id中。
我给A写了一个触发器如下:
CREATE TRIGGER `DB`.`A` AFTER update ON `DB`.`A`
FOR EACH ROW
insert into B(id) values((select id from A where old.a<>5 and new.a=5))
但是编译有问题。。
有没有SQL高手帮忙做一个实现这功能的触发器?急用在线等 谢谢

解决方案 »

  1.   

       IF old.a !=5 THEN
       INSERT INTO t_u_zero_b(a) values (old.a);
       END IF;
    
      

  2.   

    CREATE TRIGGER tr_u_zero_a BEFORE UPDATE ON t_u_zero_a
      FOR EACH ROW BEGIN
       IF old.a !=5 and new.a=5 THEN
       INSERT INTO t_u_zero_b(id) values (old.id);
       END IF;
      END;
    mysql> delimiter |
    mysql>
    mysql> CREATE TRIGGER tr_u_zero_a BEFORE UPDATE ON t_u_zero_a
        ->   FOR EACH ROW BEGIN
        ->          IF old.a !=5 and new.a=5 THEN
        ->                  INSERT INTO t_u_zero_b(id) values (old.id);
        ->          END IF;
        ->   END;
        -> |
    Query OK, 0 rows affected (0.13 sec)mysql>
    mysql> delimiter ;
    mysql> select * from t_u_zero_a;
    +----+------+
    | id | a    |
    +----+------+
    |  1 |    1 |
    |  2 |    2 |
    +----+------+
    2 rows in set (0.00 sec)mysql> select * from t_u_zero_b;
    Empty set (0.00 sec)mysql> update t_u_zero_a set a=5 where id=1;
    Query OK, 1 row affected (0.08 sec)
    Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from t_u_zero_a;
    +----+------+
    | id | a    |
    +----+------+
    |  1 |    5 |
    |  2 |    2 |
    +----+------+
    2 rows in set (0.00 sec)mysql> select * from t_u_zero_b;
    +------+
    | id   |
    +------+
    |    1 |
    +------+
    1 row in set (0.00 sec)mysql>
    
      

  3.   

    DELIMITER $$DROP TRIGGER IF EXISTS test`.`rr`$$CREATE
       
        TRIGGER `rr` AFTER UPDATE ON `g` 
        FOR EACH ROW BEGIN
    if new.a=5 and old.a=0 then
    insert into B values(new.id);
    end if;
        END;
    $$DELIMITER ;
      

  4.   

    三楼wwwwb 的代码也可以,但需要把  old.a=0 改成 old.a != 5 就可以了