将ID从表复制到另一个

问题描述 投票:1回答:1

我有一个程序来设置产品的详细信息,我现在输入详细信息作为参数,将详细信息输入到Products表和Book表的两个不同表中,我能够就地设置详细信息,但我也想从Product表中获取ProductID到Book表中,其中该列也称为ProductId。

ALTER PROCEDURE [dbo].[ProductDetails] 

@Name nvarchar(50),
@Deascription nvarchar(255),
@Image image,
@Price nvarchar(50),
@Val1 nvarchar(50),
@Val2 nvarchar(50),
@Val3 nvarchar(50)

AS
     INSERT INTO Products
     VALUES (@Name,@Deascription,@Image,@Price);

     INSERT INTO Book(ISBN, Ammount, Auther)
     VALUES (@Val1,@Val2,@Val3);

     INSERT INTO Book(ProductID)  //F_K referencing Products.ProductID
     SELECT ProductID FROM Products
     WHERE Products.ProductName=@Name AND Products.Deascription=@Deascription;

此过程由此执行。

exec ProductDetails book23, 'id should be=23', NULL, 23, 233, 23, bookers;

现在的问题是,将ID插入第二张表时,该ID下移1行,请检查图片。

“产品表”

“它在第二个表中向下移位!”

sql-server stored-procedures
1个回答
1
投票

没有变化。您正在执行两个INSERT语句,而第二个只需插入ProductID

如果要将所有内容插入同一行,请执行以下操作:

INSERT INTO Book
(
    ISBN, 
    Amount, 
    Author,
    ProductID
)
SELECT
    @Val1,
    @Val2,
    @Val3,
    p.ProductID
FROM Products as p
 WHERE p.ProductName=@Name 
 AND p.Description=@Description;

注意:这是带有说明,作者和金额的更正拼写错误

© www.soinside.com 2019 - 2024. All rights reserved.