【发布时间】:2019-06-28 20:24:19
【问题描述】:
我正在尝试创建一个触发器来检查特定列的更新后的值是否为 0。如果值为 0,则应删除该行。我对触发器不是很熟悉。如果有人向我展示/解释它,我将不胜感激。这是我尝试过的:
CREATE TRIGGER [dbo].[after_update]
ON [dbo].[tbl_LagerPos]
AFTER UPDATE
AS
BEGIN
DELETE FROM tbl_LagerPos WHERE Bestand = 0;
END
GO
这里 Bestand 是如果为 0 则应检查的那一项。如果是,则应删除整行。我知道这是在检查整个表格并且基本上是错误的。所以我只需要它来记录那个特定的记录。
【问题讨论】:
-
这是否必须在每次编辑后立即发生,还是您可以定期运行该 DELETE 查询以删除不需要的记录?
-
我的意思是它应该在对表进行更新后运行,然后检查它是否为 0,然后根据它是否为 0 将其删除。我也需要检查它是否有插入,但我不想要求太多。
-
是的,我知道你的意思。它必须在每次更新时发生,还是您可以每天运行一次或两次?
-
However, it doesn't work anyway.... 那么当您进行更新时会发生什么? -
您可能需要
DELETE FROM tbl_LagerPos WHERE Bestand = 0 and id in (select id from inserted);并且您可以将AFTER UPDATE更改为AFTER INSERT, UPDATE以在插入时获取它。
标签: sql-server tsql database-trigger