我试图创建一个审计触发器,而不必多次指定列列表。
为此,我想在触发器中生成一个临时表,其中包含INSERTED或DELETED数据的内容,然后将其处理成审计表。
如果我使用以下代码:
IF @ChangeType = 'D'
SELECT * INTO #tmp FROM DELETED
ELSE
SELECT * INTO #tmp FROM INSERTED
然后我在第二个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表放入临时表或其他内存表中?