gpt4 book ai didi

sql-server - 为插入/更新创建单个触发器

转载 作者:行者123 更新时间:2023-12-02 17:39:58 28 4
gpt4 key购买 nike

我正在使用 SQL Server 2008。

假设我有表 A,它是一个事务表。表 B 是一个历史表。

每当在表 A 中插入或更新一行时,都应在表 B 中插入一个新行。

表 B 的 Status 列应分别更改为 INSERTED 或 UPDATED。

如何通过单个触发器处理此问题?

最佳答案

你的要求很简单:

CREATE TRIGGER TR_TableA_IU ON dbo.TableA FOR INSERT, UPDATE
AS
SET NOCOUNT ON;
INSERT dbo.TableB (Column1, Column2, Status)
SELECT
I.Column1,
I.Column2,
CASE WHEN EXISTS (SELECT * FROM Deleted) THEN 'UPDATED' ELSE 'INSERTED' END
FROM Inserted I;

如果您还想处理删除,那也可以在一条语句中完成:

CREATE TRIGGER TR_TableA_IUD ON dbo.TableA FOR INSERT, UPDATE, DELETE
AS
SET NOCOUNT ON;
INSERT dbo.TableB (Column1, Column2, Status)
SELECT
I.Column1,
I.Column2,
CASE WHEN EXISTS (SELECT * FROM Deleted) THEN 'UPDATED' ELSE 'INSERTED' END
FROM
Inserted I
UNION ALL
SELECT
D.Column1,
D.Column2,
'DELETED'
FROM Deleted D
WHERE NOT EXISTS (
SELECT * FROM Inserted
);

哇,到目前为止给出了很多完全错误和半错误(至少过于复杂)的答案。

关于sql-server - 为插入/更新创建单个触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21897369/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com