关于 SQLite ,带或不带外键的REFERENCES之间有什么区别?
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 ) );
并且:
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 ,但我没有说清楚。
准确地说,我正在使用SQLite Android (因此是标签)。我不知道这是否会有什么不同,但如果它有自己的怪癖,我会很有用地了解一下。
Android
这个 FOREIGN KEY 语法比在列定义中内联定义它更灵活(例如,它允许您定义复合外键,其中引用列中应该存在两个或多个字段的组合)。
FOREIGN KEY
在您的案例中,两个DDL语句之间没有区别。可以说,外键的内联定义无非是语法修饰。