我正在设计一个设备管理系统,一个部门中可以存在很多设备和员工。
问题是:我想要实现删除部门的功能,如果直接从部门表中删除部门信息,不处理设备部门关系表、员工部门关系表就会违反数据库完整性的原则,请问大家平时做软件的时候是如何设计的?
谢谢各路朋友了。
问题是:我想要实现删除部门的功能,如果直接从部门表中删除部门信息,不处理设备部门关系表、员工部门关系表就会违反数据库完整性的原则,请问大家平时做软件的时候是如何设计的?
谢谢各路朋友了。
create trigger tr_test on 部门表 for delete
as
對 設備部门关系表,人員部門關係表進行處理
select * from roottb
select * from subtbid data
----------- --------------------------------------------------------------------
1 test root line 1
2 test root line 2
3 test root line 3(3 row(s) affected)id rootid data
----------- ----------- --------------------------------------------------------
1 1 test sub line 1 for root 1
2 1 test sub line 2 for root 1
3 1 test sub line 3 for root 1
4 2 test sub line 1 for root 2
5 2 test sub line 2 for root 2
6 2 test sub line 3 for root 2
7 3 test sub line 1 for root 3
8 3 test sub line 2 for root 3
9 3 test sub line 3 for root 3(9 row(s) affected)
-----------------------------------------
我們開始刪除:delete roottb
where id=2
--------------------------
結果:
id data
----------- -------------------------------------------------------------------------
1 test root line 1
3 test root line 3(2 row(s) affected)id rootid data
----------- ----------- ---------------------------------------------------------
1 1 test sub line 1 for root 1
2 1 test sub line 2 for root 1
3 1 test sub line 3 for root 1
7 3 test sub line 1 for root 3
8 3 test sub line 2 for root 3
9 3 test sub line 3 for root 3(6 row(s) affected)
而其中,ON DELETE CASCADE 會自動刪除它關聯的記錄的