首页 文章

SQLite表约束 - 在多列上唯一

提问于
浏览
165

我可以在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 ...

错误是 near "CONSTRAINT": syntax error

如果我放

...last_column_name last_col_datatype) UNIQUE ...

错误是 near "UNIQUE": syntax error

2 回答

  • 7

    将UNIQUE声明放在列定义部分中:

    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);
    
  • 324

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

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

相关问题