这是一个非常普遍的问题,但是我还没有找到我想要的确切问题和答案。
[我有一个表,其中的FK指向其自己的PK,以启用任意深度的层次结构,例如经典的tblEmployee,其列Manager
是带有PK tblEmployee.EmployeeID的FK。
比方说,在我的应用中,用户
tblEmployee.Manager
为NULL。tblEmployee
中另一条记录的主键值。现在表在循环引用中,而不是适当的树中。
确保在应用程序中执行步骤3 无法完成
的最佳方法是什么?我只需要确保它会拒绝执行该上次SQL更新,而显示一些错误消息即可。我对它是SQL Server中的数据库约束(已在2008或2012年工作)还是在C#应用程序的业务逻辑层中使用某种验证例程并不挑剔。
这是一个非常普遍的问题,但是我还没有找到我想要的确切问题和答案。我有一个表,其中的FK指向其自己的PK,以启用任意深度的层次结构,...
您可以使用CHECK CONSTRAINT
来执行此操作,以确认管理员ID不是周期。检查约束中不能包含复杂的查询,但是如果首先将其包装在函数中,则可以:
您可以添加“级别”整数列。
您可以在UPDATE
语句中加入支票:
我认为最好的方法是: