如何使用sqlite manager在sqlite中创建外键

时间:2014-03-27 09:13:02

标签: objective-c sqlite

我有一个名为Categories的表。

它有4列:

CategoryID - INT(primary Key),
CategoryName - NVARCHAR(32),
CategoryImage -  NVARCHAR(32),
LanguageCode - NVARCHAR(8)(foreign key).

它还有一个表格Languages.It有两列:

LanguageCode - NVARCHAR(8)(primary key),
LanguageName - NVARCHAR(16).

如何使用sqlite管理器在sqlite中为LanguageCode创建外键,该管理器可以从firefox中的插件下载

1 个答案:

答案 0 :(得分:3)

为此,您可以在官方文档中使用此示例:

CREATE TABLE artist(
artistid    INTEGER PRIMARY KEY, 
artistname  TEXT
);

CREATE TABLE track(
trackid     INTEGER,
trackname   TEXT, 
trackartist INTEGER     -- Must map to an artist.artistid!
);

对于表格跟踪,您可以通过以下方式创建foreignKey:

CREATE TABLE track(
trackid     INTEGER, 
trackname   TEXT, 
trackartist INTEGER,
FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);

SQLite Foreign Key Support

如果您在MacOSX或iOS上进行开发,我还建议您使用CoreData。

<强>更新

在SQliteManager文档中,您可以找到答案:

1。 启用外键支持

可以通过转到“数据库设置”选项卡并将“外键”开关设置为“开”,为每个数据库会话手动启用外键。

在打开数据库时自动启用外键支持。

转到菜单栏中的“工具”下拉菜单,然后选择“打开连接SQL”选项卡。 在On-Connect SQL选项卡上,在选项卡上的文本框中输入以下行。

PRAGMA foreign_keys = ON;

2。 将外键约束添加到现有表

理想情况下,创建表时应包含任何必要的外键约束。

话虽这么说,目前可以使用SQLite Manager来管理鞋袜&#34;通过以下方法将外键放入不存在的表中。

重要 - 在尝试更改包含有价值数据的任何表的结构之前,请首先制作该表的备份副本。

SQLite只有有限的ALTER TABLE支持,这意味着每当SQLite Manager对表进行任何更改而不是重命名或添加列时,它实际上都是删除表并重新创建它。另外,要成功将外键添加到已包含数据的现有表中,该表不得包含任何与此约束冲突的孤立记录。

在“列”文本框中,右键单击列出的最后一列名称以显示上下文菜单,然后选择“编辑列”。

请注意,如果TABLE定义中的最后一列是PRIMARY KEY,则需要首先添加新列,然后编辑新列的列类型以添加​​FOREIGN KEY定义。

在“列类型”框中,在数据类型后附加逗号和FOREIGN KEY定义。 单击“更改”按钮,然后单击“危险操作”对话框中的“是”按钮。

Foreign Keys Support in SQLite Manager