我有一个程序来设置产品的详细信息,我现在输入详细信息作为参数,将详细信息输入到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行,请检查图片。
没有变化。您正在执行两个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;
注意:这是带有说明,作者和金额的更正拼写错误