【问题标题】:SQLite 'IF NOT EXISTS' syntax error [duplicate]SQLite'如果不存在'语法错误[重复]
【发布时间】:2016-01-05 03:23:44
【问题描述】:

解决此错误的其他问题似乎都不适合我。我的查询是:

IF NOT EXISTS (SELECT 1 FROM Configuration WHERE key = 'CookieCount')
BEGIN
  INSERT INTO Configuration (key, value)
  VALUES ('CookieCount', '0')
END

我的错误信息是:“无法准备语句(“IF”附近的 1:语法错误)”

我在 Postgres 中有这个工作:http://sqlfiddle.com/#!15/b14ef/2/0 但这在 SQLite 中不起作用,我需要它与两者一起使用。

【问题讨论】:

  • SQLite 没有像 IFBEGIN 这样的过程 SQL 系统。不过,为此,您可能可以使用 INSERT ... SELECTWHERE 条件来检查密钥是否存在。
  • 您的问题中显示的代码也不会在 Postgres 中运行(也不是您在 SQLFiddle 中的代码)。

标签: sql sqlite


【解决方案1】:

SQLite 根本没有这样的 IF 运算符。最近的事情是 CASE...http://www.sqlite.org/lang_expr.html#case,但这并不真正适用于您的情况。

"Insert if not exists" statement in SQLite 中的答案适用于此,作为 insert-if-not-exists 语句。

【讨论】:

    【解决方案2】:

    尝试使用类似这样的 IF 语句:

    INSERT INTO Configuration (key, value) 
    SELECT 'CookieCount', '0' 
    WHERE NOT EXISTS(SELECT 1 FROM Configuration WHERE key = 'CookieCount');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-14
      • 2011-07-21
      • 2018-10-08
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      相关资源
      最近更新 更多