我正在为 Mac OS X 应用程序使用 SQLite 3.8.11。我的目标是创建一个表,然后在内部引用其他表中的某个字段。例如:
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);
Run Code Online (Sandbox Code Playgroud)
但是,我想将trackartist插入到track 中,以便每一行都包含唯一的trackartist值。如果trackartist值已经在轨道内- 必须忽略新值。我怎么能在这个设置中做到这一点?UPDATE OR IGNORE 命令似乎不起作用,值重复。
这是两个独立的问题:FOREIGN KEY仅指定要插入的值必须存在于另一个表中,但未指定它在此表中可能出现的次数。的UNIQUE约束,而另一方面,要求该值可能不会出现不止一次在该表中。
我不确定“艺术家曲目”模型是否有意义,但让我们想象一下,您真的想指定一位艺术家不能拥有多个曲目。因此,您不仅要指定trackartist引用artist(artistid),还要指定它是UNIQUE:
CREATE TABLE track(
trackname TEXT,
trackartist INTEGER UNIQUE,
FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1346 次 |
| 最近记录: |