【问题标题】:On Duplicate Key not working in SQLite重复键在 SQLite 中不起作用
【发布时间】:2020-08-02 16:37:21
【问题描述】:

在我的表中,id 是主键,但是这段代码在 sqlite3 中不起作用:

insert into text (id,text) VALUES(150574,'Hello') ON DUPLICATE KEY UPDATE 'text' = 'good'

请帮帮我。

【问题讨论】:

标签: sqlite duplicates primary-key


【解决方案1】:

INSERT .... ON DUPLICATE 在 Sqlite 中不存在。但是你可以使用INSERT OR REPLACE来达到如下效果。

INSERT 
    OR REPLACE
INTO
    text (id, text)  
VALUES
    (150574,
        (SELECT
           CASE 
              WHEN exists(SELECT 1  FROM text WHERE id=150574)
              THEN 'good' 
              ELSE 'Hello' 
           END
         )
    )

参考:http://www.sqlite.org/lang_insert.html

【讨论】:

  • 简要说明如何使用 INSERT OR REPLACE 将有助于此答案。该链接并没有真正提及 OR REPLACE 部分。
【解决方案2】:

自 SQLite 版本 3.24.0(2018 年 6 月 4 日发布)以来,ON CONFLICT 支持以 PostgreSQL 为模型。详情请见documentation

【讨论】:

    猜你喜欢
    • 2018-01-02
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    相关资源
    最近更新 更多