SQL存储过程会影响行

时间:2013-04-04 14:21:10

标签: sql-server

这是我的商店程序:

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 title = NULL和pages = NULL 在具有真实信息的行之前:/ 谢谢!

1 个答案:

答案 0 :(得分:0)

您的存储过程看起来很好,因为它应该创建正确的行数,即每个表中的一行。

但是,我看到你在做什么

select @IDENTITY=SCOPE_IDENTITY()

而你应该真的使用

set @IDENTITY=SCOPE_IDENTITY()

因为您正在设置变量,而不是查询表。

这会导致你得到额外的输出,说“1行受影响”,这可能是导致你混淆的原因。