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