2013-04-04 106 views
1

这里是我的存储过程:SQL存储过程影响的行

create procedure insertBook2 @author varchar(32), @title varchar(32), @pages int 
as 
begin 
    declare @identity int 
    insert into inventar(author,class) values (@author,'book') 
    select @IDENTITY=SCOPE_IDENTITY() 
    insert into book(id,title,pages) values (@identity,@title,@pages) 
end 

和表关系

inventar(id,class,author) 
book(id,title,pages); 

我执行程序,但它影响到3行。增加了一个行的表账面价值:ID = ID标题= NULL和页面= NULL行之前,提供真实的信息:/ 谢谢!

+0

你有这些表上的触发器吗? – 2013-04-04 14:39:03

+0

号 也许问题是那本书(ID)是外键引用inventar(ID)。当我们将值插入inventar,我们在书中用相同的ID和插入空values.instead成册,更新有一个新的记录书工作正常 – myID33 2013-04-04 16:04:29

回答

0

你的存储过程,看起来它应该创建正确的行数很好,这是一个在每个表。

但是,我看到你在做

select @IDENTITY=SCOPE_IDENTITY() 

,而应该要使用

set @IDENTITY=SCOPE_IDENTITY() 

为你设置一个变量,而不是查询表。

会导致你获得额外的输出说:“1行受到影响”,这也许是什么原因造成你的困惑。