gpt4 book ai didi

sql-server - 无法通过存储过程插入两个表

转载 作者:行者123 更新时间:2023-12-02 21:32:24 26 4
gpt4 key购买 nike

我试图通过存储过程同时插入两个表,但它只写入一个表而无法写入另一个表。

ALTER PROCEDURE [dbo].[insert_emp_pics]
@EmpName nvarchar(100),
@Nationality nvarchar(30),
@PassportPic nvarchar(100),
@Pic nvarchar(100)
AS
Begin
set nocount on;
DECLARE @ID int,
@Emp_ID int
insert into Employee (EmpName,Nationality)
values (@EmpName,@Nationality)
select @ID = @@IDENTITY
insert into DatePics
(PassportPic,Pic)
values
(@PassportPic ,@Pic)
select @Emp_ID = @@IDENTITY
end

两个表之间存在关系

第一个表 [员工] PK ID

第二个表格 [DatePics] FK Emp_ID

这是执行该语句后的错误信息。

Cannot insert the value NULL into column 'Emp_ID', table 'QTecTest.dbo.DatePics'; 
column does not allow nulls. INSERT fails.

最佳答案

您需要将新的 Emp_Id 作为外键插入 DatePics(并假设两个表都有标识列):

insert into Employee (EmpName,Nationality)
values (@EmpName,@Nationality);
set @EMP_ID = SCOPE_IDENTITY();
insert into DatePics (PassportPic,Pic, Emp_ID)
values (@PassportPic ,@Pic, @EmpID);
set @DatePicsID = SCOPE_IDENTITY();

此外,请使用 SCOPE_IDENTITY 而不是 @@IDENTITY - @@Identity 容易受到触发器还创建新的(不相关的)的问题的影响。 )身份。

关于sql-server - 无法通过存储过程插入两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22063391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com