用于使用外键创建表的SQLite语法
我正在创建一个包含外键引用的表。我想知道所需的语法。我主要从以下几个方面看到: 但是,在同一个站点()中,我看到:用于使用外键创建表的SQLite语法,sqlite,android-sqlite,Sqlite,Android Sqlite,我正在创建一个包含外键引用的表。我想知道所需的语法。我主要从以下几个方面看到: 但是,在同一个站点()中,我看到: CREATE TABLE artist( artistid INTEGER PRIMARY KEY, artistname TEXT ); CREATE TABLE track( trackid INTEGER, trackname TEXT, trackartist INTEGER REFERENCES art
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER REFERENCES artist(artistid) ON UPDATE CASCADE
);
后一种语法更简洁一些,但我想知道结果是否有所不同(除了更新级联上的,这当然有影响;我之所以包括它,是因为我完全从引用的站点复制了代码,并且因为我不知道上面的语法仅在制定这样的规范时才适用)。我正在安卓系统中工作,以防出现问题。请参阅
第一种语法是表约束,而第二种语法是列约束。
在这些示例中,它们的行为相同
您需要为多个列上的键设置一个表约束(您没有一个可以将其附加到的列)。这个答案可能与您的答案无关,但我认为它应该对其他使用android数据库的人有所帮助。
在SQLite中,默认情况下禁用外键约束(为了向后兼容)。必须使用
PRAGMA foreign_keys = 1
在与数据库建立连接之后。
这里是官方文件的链接,可以更深入地解释这一点。
请在上面的链接中导航到启用外键支持。Hi War\u Hero,我得到的外键为null。请看一下。这是我的两个表表表表1-最终字符串数据库\u CREATE\u Table=“CREATE Table if not exists scannerValuess(id整数,partName文本null,成本文本null,外键(id)引用scannerUserValuess(userid))“表2-最终字符串数据库\u CREATE\u Table\u USER=“创建表如果不存在scannerUserValuess(userid整型主键自动递增,名称文本不为null,移动文本不为null,地址文本不为null,日期文本不为null)”;请尽快帮助我。提前感谢。
PRAGMA foreign_keys = 1