我正在创建一个包含外键引用的表。我想知道所需的语法。大多数情况下,我见过以下内容(来自http://www.sqlite.org/foreignkeys.html#fk_basics):
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER,
FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);
但是,从同一个网站(http://www.sqlite.org/foreignkeys.html#fk_actions)我看到了这个:
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER REFERENCES artist(artistid) ON UPDATE CASCADE
);
后一种语法更简洁,但我想知道结果是否有所不同(除了ON UPDATE CASCADE
,这当然有效果;我只包括它因为我完全复制了代码来自引用的网站,因为我不知道上面的语法只有在制作这样的规范时才适用)。我在Android工作,以防万一。
答案 0 :(得分:32)
这个答案可能与您的答案无关,但我认为这对于使用android数据库的其他人有用 IN SQLite默认情况下禁用外键约束(为了向后兼容)。您必须使用
明确启用它PRAGMA foreign_keys = 1
建立与数据库的连接后。 这里是官方文档的链接,可以更深入地解释它。 http://sqlite.org/foreignkeys.html 请导航到上面的链接中启用外键支持。
答案 1 :(得分:22)