Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2012 插入后不工作_Sql Server 2012_Triggers - Fatal编程技术网

Sql server 2012 插入后不工作

Sql server 2012 插入后不工作,sql-server-2012,triggers,Sql Server 2012,Triggers,所有id列都具有自动增量 在我的触发器中: ALTER trigger [dbo].[mytrig] on [dbo].[requests] after INSERT, UPDATE as begin declare @MyId1 int set @MyId1 = (select Id from inserted) declare @MyId2 int declare @MyId3 int if (select column1 from inserted) = 1 begin i

所有
id
列都具有自动增量

在我的触发器中:

    ALTER trigger [dbo].[mytrig] 
on [dbo].[requests]
after INSERT, UPDATE 
as
begin 
declare @MyId1 int
set @MyId1 = (select Id from inserted)
declare @MyId2 int
declare @MyId3 int 
if (select column1 from inserted) = 1
begin
insert into [dbo].[contracts] select column1,column2,column3 .... from inserted
set @MyId2 = SCOPE_IDENTITY()
insert into [dbo].[History] select column1,column2,column3 ....  from inserted
set @MyId3 = SCOPE_IDENTITY()
insert into [dbo].[contracts_depts](Id_Contract ,column5)  select @MyId2,column6 from request_depts where Id_request=@MyId1
insert into [dbo].[History_depts]  (Id_InHistory,column5)  select @MyId3,column6 from request_depts where Id_request=@MyId1
end
end

@MyId1
仅在更新后返回值,但在插入后不返回值。我必须使用
scope\u identity()
还是什么?

您的主要问题是:您假设触发器每行调用一次-这是而不是情况

每个语句调用一次触发器,如果语句影响多行,则插入的伪表将包含多行

set @MyId1 = (select Id from inserted)
真的不起作用-它将选择任意一行(不管有多少行)


你需要重写你的触发器来考虑这个事实!假设插入的
包含100行-您想如何处理?你想达到什么目标?触发器不返回值-它们将记录到审核表中,或更新其他行,或类似的内容……

在我的情况下,用户一次只能插入一行。我只需要得到他刚刚插入的记录的id,这样我就可以用它来更新其他表。当用户编辑记录时,id是“可见的”,但在插入后不…@Theodore:将刚刚插入的
id
添加到触发器中的审核表中对我来说很好。。。。您必须向我们展示更多-表结构,触发器的全部代码-否则我们无法提供帮助