我在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");

10-06 00:32