这是我的商店程序:
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 在具有真实信息的行之前:/ 谢谢!
答案 0 :(得分:0)
您的存储过程看起来很好,因为它应该创建正确的行数,即每个表中的一行。
但是,我看到你在做什么
select @IDENTITY=SCOPE_IDENTITY()
而你应该真的使用
set @IDENTITY=SCOPE_IDENTITY()
因为您正在设置变量,而不是查询表。
这会导致你得到额外的输出,说“1行受影响”,这可能是导致你混淆的原因。