Sql server 如何在insert触发器sql server中使用变量中插入的表?
我想在查询变量中使用inserted table在insert时创建触发器, 像这样Sql server 如何在insert触发器sql server中使用变量中插入的表?,sql-server,variables,triggers,insert,Sql Server,Variables,Triggers,Insert,我想在查询变量中使用inserted table在insert时创建触发器, 像这样 SET @strTemp = 'INSERT INTO '+@LeadTable+'(service_id, batch_no, phone1, userid, tt_no ,complaint_id) select inserted.ProcId,''' + @szBatchName + ''',Right(inserted.Phone,11),inserted.UserId,inserted.TtNo,i
SET @strTemp = 'INSERT INTO '+@LeadTable+'(service_id,
batch_no,
phone1,
userid,
tt_no
,complaint_id)
select inserted.ProcId,''' + @szBatchName + ''',Right(inserted.Phone,11),inserted.UserId,inserted.TtNo,inserted.ComplaintId from inserted'
此代码未在目标表中插入数据。
我想知道如何做到这一点?
请帮忙。
多谢各位
这是我的实际代码,但它不起作用
USE [LeadDTB]
alter TRIGGER [dbo].[Push_SibelRealTimeData]
on [dbo].[SibelRealTimeData]
After Insert
AS
BEGIN
DECLARE @szProcId varchar(20)
DECLARE @szUserId varchar(50)
DECLARE @szTtNo varchar(15)
DECLARE @szComplaintId varchar(50)
DECLARE @szPhone varchar(50)
Declare @szBatchName varchar(50)
Declare @LeadDB varchar(50)
Declare @LeadTable varchar(50)
Declare @strTemp varchar(max)
Declare @nBatchCount int
declare @szdialTime varchar(50)
CREATE TABLE #tmTable (id int,procid varchar(50),uid varchar(50),ttno varchar(50),complaintid varchar(50),phone varchar(50))
select * into #tmTable from inserted
select @szdialTime = DATEADD(HOUR, 1, GETDATE())
set @szBatchName = 'SIBELRT_'+CONVERT(varchar(5), right(Year(GETDATE()),2))+Convert(varchar(5),MONTH(GETDATE()))
select @LeadDB = service_db_name from services where service_id =@szProcId
set @LeadTable = @LeadDB+'..LEAD_MASTER_' + @szProcId
SET @strTemp = 'INSERT INTO '+@LeadTable+'(
service_id,
lead_import_batch_id,
lead_phone1,
userid,
tgs_tt_no,
lead_complaint_id
)
select
procid,
''' + @szBatchName + ''',
Right(phone,11),
uid,
ttno,
complaintid from #tmTable '
EXEC(@strTemp)
drop table #tmtable
END
此代码不起作用插入的表在动态SQL语句的范围内不可见。您需要将inserted中的行插入到表变量(或temp表)中,然后在动态SQL语句中使用它。需要将表变量作为参数传递给动态SQL作为参数(应该是@szBatchName值)。插入的表在动态SQL语句的范围内不可见。您需要将inserted中的行插入到表变量(或temp表)中,然后在动态SQL语句中使用它。需要将表变量作为参数传递给动态SQL作为参数(应该是@szBatchName值)。插入的表在动态SQL语句的范围内不可见。您需要将inserted中的行插入到表变量(或temp表)中,然后在动态SQL语句中使用它。需要将表变量作为参数传递给动态SQL作为参数(应该是@szBatchName值)。插入的表在动态SQL语句的范围内不可见。您需要将inserted中的行插入到表变量(或temp表)中,然后在动态SQL语句中使用它。表变量需要作为参数传递给动态SQL作为参数(应该是@szBatchName值)
SELECT *
INTO #temp
FROM inserted
SET @strTemp = 'INSERT INTO ' + @LeadTable
+ '(service_id,
batch_no,
phone1,
userid,
tt_no,
complaint_id)
select ProcId,''' + @szBatchName
+ ''',Right(Phone,11),UserId,TtNo,ComplaintId from #temp'