我有一个ClientsPurchases
列,其中包含BillNo
列。我想将BillNo列作为外键引用到Payments
表中,但显示错误。
引用表中没有主键或候选键。 ' ClientsPurchases'匹配中的引用列列表 外键' FK__Payments__BillNo__286302EC'。消息1750,16级, 状态0,第1行
CREATE Table ClientsPurchases
(
PurchasesId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
PurchasesDetails VARCHAR(75),
[BillNo] varchar(75) NULL
)
--My Payments table as bellow
CREATE TABLE [dbo].[Payments]
(
[PaymentId] [int] IDENTITY(1,1) NOT NULL,
[PayAmount] [decimal](18, 0) NULL,
[PaymentDate] [datetime] NULL,
[ClinetId] [int] NULL,
FOREIGN KEY ([BillNo]) REFERENCES ClientsPurchases(BillNo)
)
请指教。
答案 0 :(得分:2)
[BillNo]
中的ClientsPurchases
应该是唯一的。
另外,我认为你的外键也应该被定义为Payments
表中的一列:
CREATE TABLE [dbo].[Payments]
(
[PaymentId] [int] IDENTITY(1,1) NOT NULL,
[PayAmount] [decimal](18, 0) NULL,
[PaymentDate] [datetime] NULL,
[ClinetId] [int] NULL,
[BillNo] [int] NOT NULL,
FOREIGN KEY ([BillNo]) REFERENCES ClientsPurchases(BillNo)
)
有关创建外键约束的更多信息here。
答案 1 :(得分:0)
您不能引用BillNo
,因为它不是关键。您应该将其设为NOT NULL
和UNIQUE
。