一尘不染

父母和子女表-确保子女完整

sql

我正在学习SQL,并具有一些类似于以下内容的表:

Person (id*, name)
Customer(id*, is_active, ...)
Employee(id*, department_id, ...)

(*表示主键,如果是Customer和Employee,则既是PK又是返回给Person的FK)

Customer和Employee都是Person的类型,我想确保在将记录插入Person时,也必须将记录插入EITHER
Customer或Employee,但不能同时插入两者。在此示例的限制范围内,人员不能同时是雇员和客户。

有人告诉我触发器可以用于强制执行此约束。有人可以用这个简单的例子解释一下触发器的用法吗?


阅读 155

收藏
2021-03-08

共1个答案

一尘不染

根据您的DBMS支持的内容和其他因素,您可以:

  • 通过为确保正确行为而实施的存储过程进行插入。
  • 或在视图上使用触发器(该JOIN联接具有特定子类型的超类型)以使视图“可更新”,然后插入视图中。
  • 或确保亚型都独占性和存在通过纯粹的声明方式。
  • 或使用继承不同的实施策略,从“单独的表中的所有类”)。
2021-03-08