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高手帮忙做一个实现这功能的触发器?急用在线等 谢谢
我有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高手帮忙做一个实现这功能的触发器?急用在线等 谢谢
INSERT INTO t_u_zero_b(a) values (old.a);
END IF;
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>
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 ;