Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于使用外键创建表的SQLite语法_Sqlite_Android Sqlite - Fatal编程技术网

用于使用外键创建表的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