【问题标题】:SQL Does "REFERENCE" makes the "FOREIGN KEY" automaticallySQL是否“REFERENCE”自动生成“FOREIGN KEY”
【发布时间】:2017-11-01 16:16:28
【问题描述】:

在使用REFERENCE的时候,是否也需要使用FOREIGN KEY,两者有什么区别。

例如:

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

对比:

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int REFERENCES Persons(PersonID)
);

它似乎在不包含关键字“FOREIGN KEY”的情况下工作,所以我想知道 w

我觉得这是一个非常基本的问题,但找不到答案。

【问题讨论】:

标签: sql sql-server foreign-keys


【解决方案1】:

syntax diagram 很清楚:

column_name AS computed_column_expression   
[ PERSISTED [ NOT NULL ] ]  
[   
    [ CONSTRAINT constraint_name ]  
    . . .
    | [ FOREIGN KEY ]   
        REFERENCES referenced_table_name [ ( ref_column ) ]   
        [ ON DELETE { NO ACTION | CASCADE } ]   
        [ ON UPDATE { NO ACTION } ]   
        [ NOT FOR REPLICATION ]   

    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )   
]

对于内联外键定义,FOREIGN KEYCONSTRAINT 关键字是可选的(它们用方括号括起来)。因此,这两个版本做同样的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多