【问题标题】:SQL trigger, reference to ID of deleted recordSQL触发器,引用删除记录的ID
【发布时间】:2014-02-11 03:39:01
【问题描述】:

我正在尝试使用以下代码从表中删除 ID 与刚刚从测试中删除的记录相同的所有记录:

CREATE TRIGGER usun ON test
FOR delete
as
BEGIN
    DELETE FROM table WHERE id_test = deleted.id_test;
END

SQL Server 2012 显示此错误:

无法绑定多部分标识符“deleted.id_test”。

我找不到此问题的任何解决方案。我试图写“旧”而不是“已删除”,但没有任何反应。

【问题讨论】:

  • 实现此目的的更简单方法是在引用usun.id_testtable.id_test 上定义一个外键,并在创建外键约束时声明ON DELETE CASCADE。如果您这样做,数据库将为您处理清理工作,从而使您不必编写此类触发器。分享和享受。

标签: sql triggers sql-server-2012


【解决方案1】:

deleted 是一个表,而不是“记录”。试试这个:

DELETE FROM table
    WHERE id_test in (select id_test from deleted.id_test);

【讨论】:

  • 谢谢。它将从“table”中删除ID与“test”中已删除行相同的所有行?
  • @user3162968 。 . .是的,这就是它应该做的。
猜你喜欢
  • 1970-01-01
  • 2019-11-07
  • 2011-03-17
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
  • 1970-01-01
相关资源
最近更新 更多