我正在尝试将cart
userId=1
表的所有行插入Order
和OrderItem
表,Order表包含以下列:
1.OrderId(int)
2.OrderDate(日期时间)
3.userId(int)
4.orderStatus(varchar)
user_tbl
表引用了带有userId和PK的Order
表
cart
表也是userId
CART TABLE
Id
用户id
数量
的productID
ORDERITEM TABLE
ID
订单ID
的productid
数量
ITEM表
产品编号
名称
SizeId
ColorId
价格
IMAGEURL
我试过以下但这给了我冲突错误:
INSERT语句与FOREIGN KEY约束冲突" FK_OrderItem_Item"。冲突发生在数据库" db",table" dbo.Item",column' Id'
insert into [Order] values(getdate(),@userId,@status);
set @orderId = @@IDENTITY
insert into OrderItem (OrderId ,ItemID,Qty,ColorId,SizeId)
select @orderId,Cart.ProductId,cart.Quantity,cart.ColorId,cart.SizeId
from [Cart]
where UserId=@userId ;
答案 0 :(得分:0)
将您的查询更改为
INSERT INTO [Order]
VALUES
(
GETDATE(),
@userId,
@status
);
SELECT @orderId = SCOPE_IDENTITY();--Use SCOPE_IDENTITY Instead of @@IDENTITY
INSERT INTO OrderItem
(
OrderId,
ItemID,
Qty,
ColorId,
SizeId
)
SELECT [Order].OrderId,
Cart.ProductId,
cart.Quantity,
cart.ColorId,
cart.SizeId
FROM [Cart]
INNER JOIN [Order]
ON [Cart].UserId = @userId
AND [Order].OrderId = @orderId;--SELECT Order Id From Order to be more safer