SQL"REFERENCE"会自动生成"FOREIGN KEY"

use*_*152 2 sql sql-server foreign-keys

使用REFERENCE时我们还需要使用FOREIGN KEY,两者之间有什么区别.

例如:

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
Run Code Online (Sandbox Code Playgroud)

与:

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int REFERENCES Persons(PersonID)
);
Run Code Online (Sandbox Code Playgroud)

它似乎工作没有包括关键字"外键",所以我想知道在w

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

Gor*_*off 6

语法图是相当清楚的:

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 )   
]
Run Code Online (Sandbox Code Playgroud)

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