SQL Server触发器 - 使用deletetime将删除的记录插入到另一个表中

问题描述 投票:0回答:3

目前我有一个 Item 表和一个 ItemWaste 表。 两个表都会有一些字段,例如:名称、金额等。但是 ItemWaste 表还会多一个字段,即 TimeWasted。 我希望自动将 Item 表中的 DELETED 项目插入到 ItemWaste 表中,同时将删除时间插入到 TimeWasted 字段中。

我不知道该怎么做,是使用触发器吗???

希望能在这里得到一些帮助...感谢任何反馈...谢谢....

sql-server asp.net-mvc-3 triggers
3个回答
15
投票

当然 - 不是问题。

您需要一个基本的

AFTER DELETE
触发器 - 像这样:

CREATE TRIGGER trg_ItemDelete 
ON dbo.Item 
AFTER DELETE 
AS
    INSERT INTO dbo.ItemWaste(Name, Amount, TimeWasted)
        SELECT d.Name, d.Amount, GETDATE()
        FROM Deleted d

仅此而已!要记住的一点:触发器被称为“每批次一次” - 例如如果一次删除 100 行,它将被称为 once 并且伪表 Deleted 将包含 100 行。触发器

不是
每行调用一次(这是一个常见的误解)。


0
投票
insert

操作时

delete
一行,看看
触发器


0
投票

IF INSERTING THEN INSERT INTO trigger_test (name, gender) VALUES (NEW.name, NEW.gender); -- Send message about the new record added INSERT INTO trigger_test (message) VALUES ('New record added: ' || NEW.name); END IF; IF DELETING THEN -- Store the gender of the record being deleted SET gender_value = OLD.gender; DELETE FROM trigger_test WHERE name = OLD.name AND gender = OLD.gender; -- Send message about the record being deleted INSERT INTO trigger_test (message) VALUES ('Record deleted: ' || OLD.name || ' with gender: ' || gender_value); END IF;

结束;

© www.soinside.com 2019 - 2024. All rights reserved.