Microsoft SQL Server Management Studio - 尝试添加FK约束,获取错误:"无效列..."

时间:2017-07-02 20:02:33

标签: sql sql-server database

我试图添加外键约束来链接我的表格,但是我一直收到这个错误:

  

Ms 1769,Level 16,State 1,Line 1
  外键' fk_customers_titles'引用无效列' title_id'在引用表'客户'。

我已经创建了我的表及其列,并使用ALTER TABLE语句说明了我的主键。但每当我尝试为任何表添加外键约束时,我都会收到此错误。

这就是我创建表格的方式:

CREATE TABLE customers
(
 customer_id    char_idtype,
 name           varchar(50)     NOT NULL,
 contact_name   varchar(30),
 address        varchar(50),
 city           varchar(20),
 region         varchar(15),
 country_code   varchar(10),
 country        varchar(15),
 phone          varchar(20),
 fax            varchar(20)
);
GO

CREATE TABLE titles
(
 title_id       char(3)         NOT NULL,
 description    varchar(35)     NOT NULL
);
GO

这就是我添加主键的方式:

ALTER TABLE customers
ADD PRIMARY KEY (customer_id);
GO

ALTER TABLE titles
ADD PRIMARY KEY (title_id);
GO

这就是我添加外键约束的方法:

ALTER TABLE customers
ADD CONSTRAINT fk_customers_titles 
FOREIGN KEY (title_id)
REFERENCES titles(title_id);

我使用的是Microsoft SQL Server Management Studio 2012。

感谢您的帮助, 谢谢

2 个答案:

答案 0 :(得分:3)

我认为错误非常明确:customers没有title_id。你需要添加它。 。

ALTER TABLE customers ADD title_id       char(3);

或者将其放在CREATE TABLE声明中。

答案 1 :(得分:1)

您的脚本应如下所述。

CREATE TABLE titles
(
 title_id       char(3)      Primary key   NOT NULL,
 description    varchar(35)     NOT NULL
);
GO




CREATE TABLE customers
(
 customer_id     char(3) primary key, 
 title_id       char(3)     foreign key references titles,
 name           varchar(50)  NOT NULL,
 contact_name   varchar(30),
 address        varchar(50),
 city           varchar(20),
 region         varchar(15),
 country_code   varchar(10),
 country        varchar(15),
 phone          varchar(20),
 fax            varchar(20)
);
GO