插入触发器后删除

Posted

技术标签:

【中文标题】插入触发器后删除【英文标题】: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

【问题讨论】:

“不起作用”没有提供有关正在发生的事情的任何信息。在您的触发器中,您应该引用插入的虚拟表,否则您将删除比预期更多的数据。 我想删除整行,我应该创建一个视图还是什么? 删除哪一行?我们看不到您的屏幕,也不知道您要做什么。视图对此有何帮助? 【参考方案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 感谢您的支持。我爱这个社区...

以上是关于插入触发器后删除的主要内容,如果未能解决你的问题,请参考以下文章

在一个触发器中插入和删除

更新/插入/删除表中的行后触发的触发器有问题

您能否在视图上编写触发器,该视图在更改其基表后利用插入和删除表中的数据?

mysql添加触发器后无法插入数据的问题

如何创建删除后触发器

触发器实现多表之间的增加删除及更新