【发布时间】:2017-04-15 03:43:08
【问题描述】:
SQL71516 :: 引用的表 '[dbo].[MSTransaction]' 不包含与外键中的引用列列表匹配的主键或候选键。如果引用的列是计算列,它应该被持久化。
这是我收到的错误。有什么解决办法吗?下面是两个表的 SQL 代码:
CREATE TABLE [dbo].[MSOrderline]
(
[PurchaseID] NCHAR (200) NOT NULL,
[ProductID] NCHAR (200) NOT NULL,
[Quantity] INT NULL,
CONSTRAINT [DoubleMS_PK]
PRIMARY KEY CLUSTERED ([PurchaseID] ASC, [ProductID] ASC),
FOREIGN KEY ([PurchaseID]) REFERENCES [dbo].[MSTransaction] ([PurchaseID]),
FOREIGN KEY ([ProductID]) REFERENCES [dbo].[MSProducts] ([ProductID])
);
CREATE TABLE [dbo].[MSTransaction]
(
[TransactionID] NCHAR (200) NOT NULL,
[EmployeeID] NCHAR (200) NULL,
[CustomerID] NCHAR (200) NULL,
[PurchaseID] NCHAR (200) NOT NULL,
[Amount] INT NULL,
[TotalAmount] INT NULL,
[TimeOfSale] NCHAR (200) NULL,
[DiscountID] NCHAR (200) NULL,
PRIMARY KEY CLUSTERED ([TransactionID] ASC),
FOREIGN KEY ([DiscountID]) REFERENCES [dbo].[MSDiscount] ([DiscountID]),
FOREIGN KEY ([EmployeeID]) REFERENCES [dbo].[MSEmployee] ([EmployeeID]),
FOREIGN KEY ([CustomerID]) REFERENCES [dbo].[MSCustomer] ([CustomerID])
);
我知道以前有人问过这个问题,但它要么在我的情况下不起作用,要么在我的情况下无法工作。
【问题讨论】:
-
长字符字段对于主键来说是个坏主意。
标签: sql sql-server database