SQL Server - 通过父表触发器添加的行在子表触发器中不可用

时间:2012-01-10 07:10:23

标签: sql-server triggers dependencies foreign-key-relationship constraints

我有3张桌子

  1. ParentTable
  2. ChildTable(列ParentId引用ParentTable
  3. Recording(列ParentId引用自己的表)
  4. 父表有一个触发器,可以在Recording表中添加一行。

    子表再次有一个在Recording

    中追加行的触发器

    现在我收到一条错误,指出在Recording

    中找不到该行
      

    INSERT语句与FOREIGN KEY SAME TABLE冲突   约束

1 个答案:

答案 0 :(得分:0)

您可能会触发重复的ParentID插入到Recording表中。如果您在Recording表中的ParentID上定义了唯一键,则会出现这种情况。

插入Parent表时,将带有ParentID的记录插入到Recording中。我认为你在ChildTable触发器上插入一个重复的ParentID。

也许你可以提供更多的背景信息。

此外,您可能希望尽可能避免使用触发器 - 大部分时间都是如此。使用CTE和OUTPUT子句可以帮助您避免触发器的问题。