【问题标题】:Delete after Insert trigger插入触发器后删除
【发布时间】:2017-02-24 14:18:42
【问题描述】:

每当我使用 ID 在对面表中插入同一行时,我都会尝试创建后插入触发器以从表中删除一行

但它不起作用

Create Trigger [dbo].[MeritedDeceased] On [dbo].[Deceased]
After Insert
As
Begin
Delete From dbo.Merited Where dbo.Deceased.ID = dbo.Merited.ID
End

【问题讨论】:

  • “不起作用”没有提供有关正在发生的事情的任何信息。在您的触发器中,您应该引用插入的虚拟表,否则您将删除比预期更多的数据。
  • 我想删除整行,我应该创建一个视图还是什么?
  • 删除哪一行?我们看不到您的屏幕,也不知道您要做什么。视图对此有何帮助?

标签: sql sql-server


【解决方案1】:

我认为你的意思是做这样的事情(也许)......

CREATE TRIGGER [dbo].[MeritedDeceased] ON [dbo].[Deceased]
AFTER INSERT
AS
BEGIN
    DELETE M
    FROM [dbo].[MeritedDeceased] M
    INNER JOIN Inserted I
        ON I.ID = M.ID
    ;
END
;

翻译:每次在dbo.Deceased 中插入一行,从dbo.MeritedDeceased 中删除任何具有相同(插入)ID 的行。

仅供参考,这个TRIGGER 不仅会删除一行,还会删除一起插入的一批行。如果这就是您想要的,那么这应该会有所帮助。

【讨论】:

  • 这也是我的猜测,但你的按键速度更快。 :)
  • @SeanLange 我打字很快。这是我为数不多的可取之处之一 :) 并不是要从你那里偷走它。我们会看到 - 也许 OP 想要一些完全不同的东西。
  • LOL 没有所谓的“偷”它。您输入了一个非常有效的解决方案,并且应该得到所有发布它的功劳。干得好!!
  • 这正是我一直在寻找的,感谢你们两个:D
  • 很乐意提供帮助,哈迪。 @SeanLange 感谢您的支持。我爱这个社区...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 2011-05-05
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多