多張表的刪除—觸發器實現

在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,如何編寫事物。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章