外键是指引用表中的无效列

时间:2016-07-27 12:21:19

标签: sql sql-server

enter image description here我有一个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)     
)

请指教。

2 个答案:

答案 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 NULLUNIQUE