触发器插入不能与insert语句中的insert.select一起使用

kok*_*abc 1 t-sql sql-server triggers sql-server-2008 visual-foxpro

根据主题,当我mcard_list根据下面插入某些记录时,触发器插入操作无法正常工作,

SQL Server触发器功能:

create trigger cmpnupdatemcard on MP.dbo.mcard_list
For Insert
AS
   declare @est_no varchar(100);
   select @est_no = ins.est_no from inserted ins;

   if NOt exists ( select * from mcard where est_no = @est_no )
   Begin
      insert into mcard select * from mcard_list where est_no = @est_no
      delete from mcard_list where est_no=@est_no
   End
   Else
   Begin
      delete from mcard where est_no = @est_no
      insert into mcard select * from mcard_list where est_no = @est_no
      delete from mcard_list where est_no=@est_no
   End 
 Go 

 Iocmd.execute("insert into mcard_list select '" + m.sample1 + "',sample2 from Table1) -not work.

 Iocmd.execute("insert into mcard_list select '" + m.sample1 + "','" + sample2 + "') - work.
Run Code Online (Sandbox Code Playgroud)

我发现如果我将变量("sample2")从另一个查询执行中分离出来并再次添加回上面的行,而不是从前面的语句,它将正常工作.

如果我想再次加入"来自"声明,感谢有人可以帮我解决这些问题.谢谢.

Mik*_*son 5

插入触发器每个语句执行一次,每个插入行不执行一次.您必须重写触发器,以便处理伪表inserted有多行的情况.

常见的SQL Server错误 - 多行DML触发器