我有一个表,部门,有几个位字段来表示部门类型--一种是仓库(如果是,表示部门是仓库)
我还有另一张表,ManagersForWarehouses,它的结构如下:
ID autoinc
WarehouseID int (foreign key reference DepartmentID from departments)
ManagerID int (foreign key reference EmployeeID from employees)
StartDate
EndDate为了为仓库设置新的管理器,我在这个表中插入了EndDate null,并且我有一个触发器,它为那个仓库的前一条记录设置了EndDate =新经理的StartDate,因此在特定时间出现了一个仓库管理器。
我想添加两个检查约束,如下所示,但不确定如何做到这一点
如果ManagersForWarehouses中有记录,
谢谢
发布于 2010-05-20 21:55:53
在部门表中添加唯一约束( IsWarehouse)
)。
而且你们都是100%坚如磐石的完整,没有任何漏洞。只有受信任的约束才没有任何漏洞。触发器不太可靠。
发布于 2009-09-10 18:58:25
你应该用触发器来做这件事。每张桌子上一张。确保对多个记录插入、更新或删除进行说明。做任何其他事情都会使你的数据处于危险之中。数据不只是从应用程序进入数据库。除非您需要不正确和无用的数据,否则您无法从应用程序中强制执行这类事情。
发布于 2009-09-10 17:51:18
不要将这种约束放在DB表上。
最好使用代码(业务逻辑)来执行这样的事情。
编辑:与您的问题无关,但您不应该使用触发器来执行对其他行的更新。我没有可靠的联系来支持它。
https://stackoverflow.com/questions/1406718
复制相似问题