REFERENCES与FOREIGN KEY之间有什么区别

时间:2014-02-08 15:17:05

标签: sql sqlite relational-database android-sqlite ddl

关于SQLite,REFERENCES与FOREIGN KEY之间有什么区别?

这个

有什么区别
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 ) 
);

和此:

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        
);

我发现了另一个问题: Difference between using REFERENCES with and without FOREIGN KEY?

我读过the documentation,虽然我没有说清楚。

确切地说,我在Android上使用SQLite(因此标记)。我不知道这是否有所不同,但如果它有自己的怪癖,那么对我来说找出它是非常有用的。

1 个答案:

答案 0 :(得分:3)

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

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