代码之家  ›  专栏  ›  技术社区  ›  Kate

SQL Server中的前触发器

  •  1
  • Kate  · 技术社区  · 16 年前

    我有两张桌子: survey (id(PK), name) 和 survey_to_topic (survey_id(PK,FK,not null), topic_id(PK,FK,not null)) . 当我尝试从调查表中删除时,出现异常:

    “DELETE语句与冲突 参考约束 “FK_调查-主题调查”。这个 数据库中发生冲突 “mydatabase”,表 “dbo.survey到主题”,专栏 “调查id.”

    4 回复  |  直到 16 年前
        1
  •  6
  •   Alex Deem    16 年前

    您可以在两个表之间的关系中添加DELETE CASCADE,并且将自动删除survey_to_topic表中的记录。

    看见 http://msdn.microsoft.com/en-us/library/aa933119(SQL.80).aspx

        2
  •  1
  •   Adriaan Stander    16 年前

    您可以在删除级联上使用。这将添加到包含FK的表中。

    here .

        3
  •  1
  •   marc_s MisterSmith    16 年前

    正如Alex Deem和astander已经提到的,您应该在外键关系上使用ON DELETE CASCADE,它会自动为您处理此场景。

    Introduction to triggers 文章提供了一些背景信息。

    但在删除级联肯定是最简单的方法来做到这一点。

        4
  •  0
  •   Damir Sudarevic    16 年前

    正如在座的其他人所提到的, ON DELETE CASCADE 这是一条路——只要你意识到后果;这是有原因的 ON DELETE NO ACTION 关于删除级联 .