我的觸發如下,表變量的動態SQL不工作
Alter TRIGGER [dbo].[LogTable_InsertTrigger] on [dbo].[std_table] AFTER INSERT
as
DECLARE @ColName varchar(50), @QueryText nvarchar(max)
declare @inserted TABLE(
[CountryID] [int] NOT NULL,
[Country] [nvarchar](255) NOT NULL,
[RegionId] [int] NULL
)
insert into @inserted
select * from inserted
DECLARE objCursor CURSOR FAST_FORWARD FOR
select ColName from dbo.getColumnNames('std_table')
OPEN objCursor
FETCH NEXT FROM objCursor INTO @ColName
WHILE @@FETCH_STATUS = 0
BEGIN
set @QueryText= '
insert into dbo.LogTable
(StandardType,Attribute,Action,NEwValue,UserId,ModifiedDate)
select ''Country'','''[email protected]+''',''Insert'','[email protected]+',1,getdate()
from @inserted'
EXEC sp_executesql @QueryText
FETCH NEXT FROM objCursor INTO @ColName
END
CLOSE objCursor
DEALLOCATE objCursor
當我嘗試插入到DA層我得到的異常Must declare the table variable "@inserted"
表std_table。
我無法直接使用插入的表格,因爲我正在寫一個動態查詢,其中的魔法表格無法工作。所以我試圖將插入表中的數據轉儲到臨時表並從中訪問。
我試着用
select *
into #inserted
from inserted
這工作,但因爲我的應用程序被許多用戶通過網絡訪問這會導致數據的問題。所以我不能使用這個。
光標在觸發器:你要TSQL地獄! – 2012-02-22 03:55:02