我在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)
);
但是,我想将trackartist插入轨道,以便每一行都包含唯一的trackartist值。如果trackartist值已经在轨道内-必须忽略新值。
在这种情况下我该怎么做?
UPDATE或IGNORE命令似乎不起作用,值重复。
最佳答案
也许这行得通吗?
INSERT OR REPLACE INTO track (trackartist) VALUES '123'
WHERE NOT EXISTS(SELECT 1 FROM track WHERE trackartist="123");
有关详细文档,请参见here。
编辑:
正确的语法如下:
INSERT OR REPLACE INTO track (trackartist) SELECT '123' WHERE NOT EXISTS(SELECT 1 FROM track WHERE trackartist="123");