56,803
社区成员




mysql> CREATE TABLE T_0(id int primary key, gid int);
Query OK, 0 rows affected (5.11 sec)
mysql> CREATE TABLE T_1(id int primary key, gid int);
Query OK, 0 rows affected (0.93 sec)
mysql> INSERT INTO T_0(id, gid) VALUES(1, 547);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO T_1(id, gid) VALUES(1, 547);
Query OK, 1 row affected (0.00 sec)
mysql> select * from T_0;
+----+------+
| id | gid |
+----+------+
| 1 | 547 |
+----+------+
1 row in set (0.00 sec)
mysql> select * from T_1;
+----+------+
| id | gid |
+----+------+
| 1 | 547 |
+----+------+
1 row in set (0.00 sec)
mysql> DELIMITER $$
mysql> CREATE TRIGGER updt_T_1 AFTER UPDATE ON T_0
-> FOR EACH ROW BEGIN
-> UPDATE T_1 SET gid = OLD.gid WHERE id = OLD.id;
-> END;
-> $$
-> DELIMITER ;
mysql> select * from T_0;
+----+------+
| id | gid |
+----+------+
| 1 | 777 |
+----+------+
1 row in set (0.00 sec)
mysql> select * from T_1;
+----+------+
| id | gid |
+----+------+
| 1 | 547 |
+----+------+
1 row in set (0.00 sec)
mysql> select * from T_0;
+----+------+
| id | gid |
+----+------+
| 1 | 666 |
+----+------+
1 row in set (0.00 sec)
mysql> select * from T_1;
+----+------+
| id | gid |
+----+------+
| 1 | 777 |
+----+------+
1 row in set (0.00 sec)
触发表:
CREATE TABLE `T_0` (
`id` int(11) NOT NULL,
`gid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312
被触发表:
CREATE TABLE `T_1` (
`id` int(11) NOT NULL,
`gid_old` int(11) DEFAULT '0',
`gid_new` int(11) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312
insert 触发器:
DELIMITER $$
CREATE TRIGGER inst_T_1 AFTER INSERT ON T_0
FOR EACH ROW
INSERT INTO T_1(id, gid_old, gid_new) VALUES(NEW.id, NEW.gid, NEW.gid);
$$
DELIMITER ;
update 触发器:
DELIMITER $$
CREATE TRIGGER updt_T_1 AFTER UPDATE ON T_0
FOR EACH ROW
UPDATE T_1 SET gid_old = OLD.gid, gid_new = NEW.gid WHERE id = OLD.id;
$$
DELIMITER ;
INSERT INTO T_0(id, gid) values(1, 547);
mysql> select * from T_0;
+----+------+
| id | gid |
+----+------+
| 1 | 547 |
+----+------+
1 row in set (0.00 sec)
mysql> select * from T_1;
+----+---------+---------+
| id | gid_old | gid_new |
+----+---------+---------+
| 1 | 547 | 547 |
+----+---------+---------+
1 row in set (0.00 sec)
mysql> UPDATE T_0 SET gid = 777 WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from T_1;
+----+---------+---------+
| id | gid_old | gid_new |
+----+---------+---------+
| 1 | 547 | 777 |
+----+---------+---------+
1 row in set (0.00 sec)
mysql> select * from T_0;
+----+------+
| id | gid |
+----+------+
| 1 | 777 |
+----+------+
1 row in set (0.00 sec)
DELIMITER $$
CREATE TRIGGER updt_T_1 AFTER UPDATE ON T_0
FOR EACH ROW BEGIN
UPDATE T_1 SET gid = new.gid WHERE id = OLD.id;
END $$
DELIMITER ;