mysql利用触发器在删除父表的之前先删除子表记录
2016-12-12 16:31
323 查看
下面sql语句分别创建组织organization表(父表)与成员member表(子表)。注意:这两个表之间虽然创建了外键约束关系,但不存在级联删除选项。
使用insert语句分别向两个表中插入若干测试数据。
接着创建触发器。该触发器实现的功能是:删除orgnization表中的某些组织信息前,首先删除成员member表中与之对应的信息
下面是查询和删除结果显示
可以看出在删除organization的o_no=1记录时,相应的子表记录也被删除了
本文为《mysql核心技术与最佳实践》的学习笔记
create table organization( o_no int not null auto_increment, o_name varchar(32) default '', primary key(o_no) )engine=innodb; create table member( m_no int not null auto_increment, m_name varchar(32) default '', o_no int, primary key(m_no), constraint organization_member_fk foreign key (o_no) references organization(o_no) )engine=innodb;
使用insert语句分别向两个表中插入若干测试数据。
insert into organization(o_no,o_name) values(null,'o1'),(null,'o2'); insert into member(m_no,m_name,o_no) values(null,'m1',1),(null,'m2',1),(null,'m3',1),(null,'m4',2),(null,'m5',2);
接着创建触发器。该触发器实现的功能是:删除orgnization表中的某些组织信息前,首先删除成员member表中与之对应的信息
delimiter $$ create trigger organization_delete_before_trigger before delete on organization for each row begin delete from member where o_no=old.o_no; end; $$ delimiter ;
下面是查询和删除结果显示
可以看出在删除organization的o_no=1记录时,相应的子表记录也被删除了
本文为《mysql核心技术与最佳实践》的学习笔记
相关文章推荐
- MySql触发器之--主表记录删除并备份以及相关联子表记录自动删除
- mysql利用触发器同步两个表的记录值信息
- 利用DataGrid编辑、修改、删除记录
- 利用DataGrid编辑、修改、删除记录
- MYSQL中删除重复记录的方法
- MYSQL中删除重复记录的方法
- 在Oracle中如何利用Rowid查找和删除表中的重复记录
- 在Oracle中如何利用Rowid查找和删除表中的重复记录(转)
- mysql删除表中某一字段重复的记录
- 删除表的重复记录(利用游标)
- [MySQL FAQ]系列 -- 如何利用触发器实现账户权限审计
- 用PHP进行MySQL删除记录操作代码
- 利用DataGrid编辑、修改、删除记录
- 利用sql2005的新特性实现根据子表条件得到的主表键且按其排序取出对应主子表记录的方法
- web_GridView利用内嵌按钮删除记录
- MYSQL中删除重复记录的方法
- 怎样在触发器中删除刚刚录入但是不合法的记录?
- oralce设置主表记录删除,子表关联记录也删除的脚本
- 写一个触发器。从tb_control里删除一条记录,自动把该记录添加到另一个表tb_ctrlHistor中
- 利用DataGrid编辑、修改、删除记录