Jef*_*eff 37 sqlite android-sqlite
对不起新手问题.
我使用SQLite数据库浏览器创建了我的表,但是:
我不知道如何使用该应用程序指定我的外键?
如何在表之间创建关系图?
Chi*_*sai 63
我知道很久以前就问过这个问题,但我找到了.它内置于GUI中.您只需拖动并使那些名称,类型选项卡稍微小一点,以便为外键选项卡腾出空间.将鼠标指针放在末尾并拖动标题.
我的SQLite浏览器版本是3.7.0版.
phi*_*ngs 13
我找不到使用"数据库结构"选项卡定义外键约束的方法.我强烈建议使用脚本定义表定义和约束,而不是使用图形编辑器构建它们 - 这使得创建新数据库和跟踪模式更改变得更加容易.
举个例子,假设我们有两个表:一个定义文件名,一个指定用于压缩的方法,我们可以在定义时向file_definition表添加一个外键约束.
CREATE TABLE [compression_state] (
[compression_state_id] INTEGER PRIMARY KEY NOT NULL,
[value] TEXT NOT NULL
);
CREATE TABLE [file_definition] (
[file_id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[compression_state_id] INTEGER NOT NULL,
[name] TEXT NOT NULL,
FOREIGN KEY(compression_state_id) REFERENCES compression_state(compression_state_id)
);
Run Code Online (Sandbox Code Playgroud)
但是,默认情况下,SQLite不会强制执行约束,因此每次连接到数据库时,都必须发出以下命令以启用约束检查.
PRAGMA foreign_keys = ON;
Run Code Online (Sandbox Code Playgroud)
文档中的更多详细信息.
如果表已经存在并且您不想构建完整的脚本,那么您运气不好,SQLite不支持在生成表后添加外键,请参见此处:SQLite未实现的SQL功能
从SQLite文档:
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER -- Must map to an artist.artistid!
);
Run Code Online (Sandbox Code Playgroud)
最后:
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER,
FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);
Run Code Online (Sandbox Code Playgroud)
在SQL浏览器环境的数据库浏览器(v 3.8.0 - Sqlite v 3.9.2)中,当您为track
表格添加数据库字段以及PK,AI和其他列时,您可以找到外键列.
在那里,在这个例子中,你只需要添加artist(artistid)
的中trackartist
排.
然后创建外键约束.