有以下情况:
表格订单
PK - OrderID
表OrderPosition
PK - 订单ID
PK - OrderPosition
OrderID是表格订单的主键。 OrderID和OrderPosition是表OrderPosition的组合主键。
如果条目是OrderPosition被添加,则使用的OrderID必须存在于表Orders中,OrderPosition表中OrderID和OrderPosition的组合必须是唯一的。
我正在使用SQL Server 2012并尝试添加外键约束,但这不起作用,因为列数不同。那么建模这种情景的正确方法是什么?
答案 0 :(得分:0)
表格订单
PK - OrderID IDENTITY(1,1)
表格订单
PK - OrderPos_ID IDENTITY(1,1)
订单ID
OrderPosition
+ UNIQUE CONSTRAINT (OrderID, OrderPosition)
+ FOREIGN KEY CONSTRAINT (OrderID) REFERENCES Orders(OrderID)
CREATE TABLE #o (o_id INT IDENTITY(1,1) PRIMARY KEY)
CREATE TABLE #op (o_id INT, pos_no INT, PRIMARY KEY(o_id, pos_no))
ALTER TABLE #op ADD CONSTRAINT FK_1 FOREIGN KEY (o_id) REFERENCES #o(o_id)
GO
SELECT * FROM #o o INNER JOIN #op op ON op.o_id = o.o_id
GO