Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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 SQL存储过程影响行_Sql Server - Fatal编程技术网

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