我正在创建一个自相关表:
表Item
列:
ItemId int - PK;
金额 - 不为空;Price money - 使用 UDF 的计算列,根据项目祖先的 Amount 检索值。
ParentItemId int - 可为空,引用此表中的另一个 ItemId。
我需要避免循环,这意味着兄弟姐妹不能成为他祖先的祖先,这意味着如果 ItemId=2 ParentItemId = 1,则不应允许 ItemId 1 ParentItemId = 2。
我不知道在这种情况下最好的做法是什么。我想我应该添加一个从 UDF 或其他任何东西获取标量值的 CK。
编辑: 另一个选项是创建一个 INSTEAD OF 触发器并将 ParentItemId 字段的更新放入 1 个事务中,并从 @@RowIdentity 中选择 Price 字段,如果它失败取消事务,但我更喜欢 UDF 验证。
任何想法都受到真诚的欢迎。