gpt4 book ai didi

sql - 主键 (a,b) 与主键 (b,a) 不同吗?

转载 作者:行者123 更新时间:2023-12-01 05:22:49 25 4
gpt4 key购买 nike

我有一个employee 和一个supervisor 表。主管是雇员。 employee 表如下所示:

employee_id | employee_name
1 | Freeman
2 | Manfred

supervisor 表如下所示(字段是 employee 表的外键):

supervisor_id | employee_id
1 | 2
2 | 1

我实现了一个复合主键(supervisor_id、employee_id)并且没有阻止更新。

如何防止上述情况发生?员工不能监督他/她的主管。

最佳答案

仅使用主键或检查约束,这不容易实现。

  • 主键是唯一约束,指定任何行都不能与任何其他行具有相同的主键。但它并没有说某些组合是无效的。
  • 检查约束可以使用更复杂的逻辑,但仅限于要插入的行中列的值。您的问题需要查看其他行。 (但是请参阅 Gordon Linoff 的回答,了解如何使用约束来做到这一点——尽管它有点不透明)。

解决方案是使用触发器。触发器可以检查表中的其他行以查看员工是否已经受到监督并取消交易。

从这里开始:https://msdn.microsoft.com/en-us/library/ms189799.aspx

关于sql - 主键 (a,b) 与主键 (b,a) 不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33601806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com