sqlite3有时INSERT,总是RETURNING

bxgwgixi  于 2023-06-06  发布在  SQLite
关注(0)|答案(1)|浏览(274)

因此,我在某个sqlite3 DB中有一个表,它具有以下结构:

  1. CREATE TABLE table_00 (
  2. id INTEGER PRIMARY KEY AUTOINCREMENT,
  3. value VARCHAR(100) UNIQUE NOT NULL
  4. );

我需要从这个表中检索id,以便在其他查询中使用它。到目前为止,这是使用以下方法完成的:

  1. INSERT INTO table_00(value) VALUES (<some_value>) ON CONFLICT (value) DO UPDATE SET value = <some_value> RETURNING id;

这是可行的,但从长远来看,当我只打算检索与值对应的id时,它会花费太多的时间进行更新。是否有任何查询总是返回id,而不需要在值已经存在的情况下更新任何条目?我想避免执行INSERT-ON CONFLICT-DO NOTHING后接SELECT。

m0rkklqb

m0rkklqb1#

您可以尝试在更新时将value列设置为它本身,而不是外部提供的值。我不完全确定SQLite是否能检测到这种情况并对其进行优化,但值得一试。

  1. INSERT INTO table_00(value) VALUES (<some_value>)
  2. ON CONFLICT (value) DO UPDATE SET value = value
  3. RETURNING id;

相关问题