代码之家  ›  专栏  ›  技术社区  ›  Rich

sqlite表约束-在多个列上是唯一的

  •  168
  • Rich  · 技术社区  · 15 年前

    我可以在sqlite网站上找到语法“图表”,但是没有示例,我的代码崩溃了。我有其他表在一个列上有唯一的约束,但是我想在两个列上的表上添加一个约束。这就是导致sqliteexception的原因,消息是“语法错误”。

    CREATE TABLE name (column defs) 
    UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE
    

    我这么做是基于以下原因:

    table-constraint

    为了清楚起见,我提供的链接上的文档表明 CONTSTRAINT name 应该在我的约束定义之前。

    不过,可能导致解决方案的是,调试器所抱怨的是我括号中列定义后面的内容。

    如果我放

    ...last_column_name last_col_datatype) CONSTRAINT ...
    

    错误是 “constraint”附近:语法错误

    如果我放

    ...last_column_name last_col_datatype) UNIQUE ...
    

    错误是 接近“唯一”:语法错误

    2 回复  |  直到 9 年前
        1
  •  328
  •   Ayman Hourieh    15 年前

    将唯一声明放入列定义部分:

    CREATE TABLE name (column defs, UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE);
    

    工作示例:

    CREATE TABLE a (i INT, j INT, UNIQUE(i, j) ON CONFLICT REPLACE);
    
        2
  •  8
  •   Larry Lustig    15 年前

    好吧,您的语法与包含的链接不匹配,该链接指定:

     CREATE TABLE name (column defs) 
        CONSTRAINT constraint_name    -- This is new
        UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE
    
    推荐文章