Sql server SQL存储过程影响行
以下是我的门店流程:Sql server SQL存储过程影响行,sql-server,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(i
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行。在包含真实信息的行之前,在表book values:id=id title=NULL和pages=NULL上又添加了一行:/
谢谢 您的存储过程看起来不错,因为它应该创建正确数量的行,即每个表中有一行 然而,我看到你在做什么
select @IDENTITY=SCOPE_IDENTITY()
而你真的应该使用
set @IDENTITY=SCOPE_IDENTITY()
设置变量时,不要查询表
这可能会导致您得到额外的输出,说“1行受影响”,这可能是造成您混淆的原因。这些表上有触发器吗?没有。问题可能是book(id)是外键引用inventar(id)。当我们将值插入inventar时,我们在book中有一个具有相同id和空值的新元组。更新book可以正常工作,而不是插入book