使用或不使用外键的引用之间有什么区别

Kon*_*ski 5 sql sqlite ddl relational-database android-sqlite

关于SQLite,带或不带外键的引用之间有什么区别?

这有什么区别

CREATE TABLE players_set ( 
    _id            INTEGER PRIMARY KEY AUTOINCREMENT
                           NOT NULL,
    player_id      INTEGER REFERENCES players ( _id ) ON DELETE CASCADE,
    players_set_id INTEGER REFERENCES players_set_names ( _id ) 
);
Run Code Online (Sandbox Code Playgroud)

和这个:

CREATE TABLE players_set ( 
    _id            INTEGER PRIMARY KEY AUTOINCREMENT
                           NOT NULL,
    player_id INTEGER,
    players_set_id INTEGER REFERENCES players_set_names ( _id ),
    FOREIGN KEY (player_id) REFERENCES players ( _id ) ON DELETE CASCADE        
);
Run Code Online (Sandbox Code Playgroud)

我发现了另一个问题: 带有和不带有FOREIGN KEY的REFERENCES之间的区别?

我阅读了文档,但是对我来说并不清楚。

确切地说,我在使用SQLite Android(因此使用了标签)。我不知道这有什么区别,但是如果它有它自己的怪癖,那对我来说非常有用。

Mur*_*nik 6

FOREIGN KEY语法比列定义内嵌定义它更灵活(例如,它允许您定义复合外键,其中两个或多个字段的组合应该在引用列存在)。

在您的情况下,两个 DDL 语句之间没有区别。可以说外键的内联定义只不过是语法糖化。