多张表的删除—触发器实现

在web开发时,经常会有多张表的删除操作。例如,师生互动平台,教务处部分,删除学生的时候,许多其他表中也会有studentid这个字段,那么,如果单纯的删除basic_info_student表中的该学生,下一次,许多表在遍历的时候,就会出现,找不到学生基本信息的情况。此时,解决办法是:1,把所有的有studentid字段的表中该记录删除。2,将studentid更新成为另外一个默认值。我们这里采用的是第二种,当然,第一种和第二种原理相同。

1,新建删除触发器

create or replace trigger studelete
after DELETE
ON basic_info_student
for each row
BEGIN delete from ELECOURSE_INFO_USER where Vstudentid=:old.Vstudentid;
END studelete;
2,在从basic_info_student表中删除数据的时候,就会级联删除数据
delete from basic_info_student where Vstudentid='1'

3,最后的版本

create or replace trigger studelete
after DELETE
ON basic_info_student
for each row
BEGIN delete from ELECOURSE_INFO_USER where Vstudentid=:old.Vstudentid;
update agreestudent set Vstudentid='0000001' where Vstudentid=:old.Vstudentid;
delete from apply_list where Vstudentid=:old.Vstudentid;
delete from discuss_App where Vstudentid=:old.Vstudentid;
delete from DM_ask where studentid=:old.Vstudentid;
delete from Dm_bbs where studentid=:old.Vstudentid;
delete from Dm_discuss where studentid=:old.Vstudentid;
delete from Dm_dminfo where studentid=:old.Vstudentid;
delete from Dm_interact where studentid=:old.Vstudentid;
delete from Dm_logon where studentid=:old.Vstudentid;
delete from Dm_qsearch where studentid=:old.Vstudentid;
delete from ELECOURSE_INFO_USER where Vstudentid=:old.Vstudentid;
update label_lesson set Vstudentid='0000001' where Vstudentid=:old.Vstudentid;
update Posts set Vpersonid='0000001' where Vpersonid=:old.Vstudentid and Ipersontype='11';
delete from ptcourse_info_user where Vstudentid=:old.Vstudentid;
update question_list set Vstudentid='0000001' where Vstudentid=:old.Vstudentid;
update Replypost set Vpersonid='0000001' where Vpersonid=:old.Vstudentid and Ipersontype='11';
update sms_list set Vsenderid='0000001' where Vsenderid=:old.Vstudentid and ISenderType='11';
delete from student_file where Vstudentid=:old.Vstudentid;
delete from student_sms where Vstudentid=:old.Vstudentid;
END studelete;


问题:

1,什么是触发器。

2,但是级联删除数据库的时候,如果数据库里面字段对应的有文件id,如何删除附件呢?

3,如何编写事物。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值