创建一个触发器删除两个表的MySQL演练:
1.登录:
el@apollo:~$ mysql -u root -p
Enter password:
mysql> use your_database;
Database changed
2。创建一些测试表并插入行:
mysql> create table derp(derp1 INT);
Query OK, 0 rows affected (0.02 sec)
mysql> create table foo(foo1 INT);
Query OK, 0 rows affected (0.02 sec)
mysql> create table bar(bar1 INT);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into derp values (1);
Query OK, 1 row affected (0.01 sec)
mysql> insert into foo values (1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into bar values (1);
Query OK, 1 row affected (0.00 sec)
3.触发:
mysql> delimiter //
mysql> create trigger delete_foo_and_bar_when_derp_is_deleted
-> after delete on derp
-> for each row
-> begin
-> delete from foo where foo1=OLD.derp1;
-> delete from bar where bar1=OLD.derp1;
-> end//
Query OK, 0 rows affected (0.02 sec)
4.查看表是否存在并且所有三个都已填充。
mysql> delimiter ;
mysql> select * from derp;
+-------+
| derp1 |
+-------+
| 1 |
+-------+
1 row in set (0.00 sec)
mysql> select * from foo;
+------+
| foo1 |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql> select * from bar;
+------+
| bar1 |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
5.从derp中删除
mysql> delete from derp where derp1 = 1;
Query OK, 1 row affected (0.01 sec)
6.看到 derp、foo 和 bar 现在是空的:
mysql> select * from derp;
Empty set (0.00 sec)
mysql> select * from foo;
Empty set (0.00 sec)
mysql> select * from bar;
Empty set (0.00 sec)