cho*_*ovy 12 sqlite upsert sql-insert
如果标签和 url 组合已存在,我会尝试忽略插入:
INSERT INTO tags(tag, url) VALUES (?, ?);
ON CONFLICT(url, tag) IGNORE
Run Code Online (Sandbox Code Playgroud)
我有一个唯一索引(tag, url)
CREATE UNIQUE INDEX tag_url ON tags (tag, url)
Run Code Online (Sandbox Code Playgroud)
该应用程序只是崩溃说[uncaught application error]: SqliteError - UNIQUE constraint failed: tags.tag, tags.url
for*_*pas 23
您错误地使用了 SQLite 的UPSERT语法。
首先,您在语句之后和之前都有一个;权利,它将语句分隔为不同的语句。
这意味着该语句作为简单语句执行(子句没有任何区别),因此您会收到错误。INSERTON CONFLICTINSERTON CONFLICTUNIQUE constraint failed
另外,您使用的是关键字IGNORE而不是DO NOTHING。
将您的代码更改为:
INSERT INTO tags(tag, url) VALUES (?, ?)
ON CONFLICT(tag, url) DO NOTHING;
Run Code Online (Sandbox Code Playgroud)
您可以使用以下语法实现相同的目的INSERT OR IGNORE:
INSERT OR IGNORE INTO tags(tag, url) VALUES (?, ?);
Run Code Online (Sandbox Code Playgroud)
请参阅演示。
| 归档时间: |
|
| 查看次数: |
9107 次 |
| 最近记录: |