2015-02-05 75 views
1

我正在使用SQL SERVER 2000,并且我有用于创建表的代码。我的表有外键,我希望添加一个约束。 我的问题是:我必须定义约束和外键?或者只是其中的一个足够?SQL SERVER FK和约束条件

CREATE TABLE controls 
(
id     INT   IDENTITY(1,1) PRIMARY KEY, 
description   VARCHAR(2000), 
date    DATETIME, 
result    VARCHAR(255), 
clients_id   INT FOREIGN KEY REFERENCES clients(id), 
profesionals_id  INT FOREIGN KEY REFERENCES profesionals(id), 
CONSTRAINT FK_CLIENTS FOREIGN KEY (clients_id) REFERENCES clients(id) 
); 

最后2行,FK定义和约束,它是多余的?

回答

2

最后一行

CONSTRAINT FK_CLIENTS FOREIGN KEY (clients_id) REFERENCES clients(id) 

等价于以下client_ids的iniline定义:

FOREIGN KEY REFERENCES clients(id) 

两者之一应该被删除。

+4

我通常会建议保留'CONSTRAINT'变体并删除内联声明;内联变体仍然给它一个名字,但它是完全不可预知的,如果您以后需要编写需要(暂时)删除约束的脚本,那么这会造成不好的时期。 – 2015-02-05 15:53:44