gpt4 book ai didi

sql - 创建触发器数据的临时表

转载 作者:行者123 更新时间:2023-12-04 23:42:46 26 4
gpt4 key购买 nike

我正在尝试创建一个审计触发器,而不必多次指定列列表。

为此,我想在触发器中生成一个包含 INSERTED 或 DELETED 数据内容的临时表,然后将其处理到审计表中。

如果我使用这个:

IF @ChangeType = 'D'
SELECT * INTO #tmp FROM DELETED
ELSE
SELECT * INTO #tmp FROM INSERTED

然后我在第 2 个 SELECT * INTO 处得到一个编译错误,表明表 #tmp 已经存在。

如果我尝试使用动态 SQL 解决此问题:

SET @Sql = 'SELECT * INTO #tmp FROM '
IF @ChangeType = 'D'
SET @Sql = @Sq + 'DELETED'
ELSE
SET @Sql = @Sql + 'INSERTED'

EXEC (@Sql)

然后我得到一个错误,DELETED 和 INSERTED 表不存在。

如何将触发器中的 INSERTED 和 DELETED 表放入临时表或其他内存表中?

最佳答案

尝试在 if 之外创建临时表,例如:

SELECT TOP 0 * INTO #tmp FROM DELETED

IF @ChangeType = 'D'
INSERT INTO #tmp SELECT * FROM DELETED
ELSE
INSERT INTO #tmp SELECT * FROM INSERTED

关于sql - 创建触发器数据的临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5390519/

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