1. ホーム
  2. sqlite

[解決済み] SQLiteのテーブル制約 - 複数の列で一意となる

2022-04-14 11:13:46

質問

SQLiteのサイトでこれに関する構文 "charts"が見つかりますが、例がなく、私のコードはクラッシュしてしまいます。1つのカラムにユニークな制約を持つ他のテーブルがありますが、2つのカラムに制約を追加したいのです。 これは、"syntax error"というメッセージを持つSQLiteExceptionを引き起こしているものです。

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

を元にやっています。

テーブル制約

はっきり言って、私が提供したリンクのドキュメントには、次のように書かれています。 CONTSTRAINT name は、制約定義の前に来る必要があります。

しかし、解決につながるかもしれないことは、私の括弧で囲まれた列定義の後に続くものは、デバッガーが文句を言うものであるということです。

もし私が

...last_column_name last_col_datatype) CONSTRAINT ...

というエラーが発生します。 CONSTRAINT" の近く: 構文エラー

もし私が

...last_column_name last_col_datatype) UNIQUE ...

というエラーが発生します。 UNIQUE" の近く: 構文エラー

解決方法は?

UNIQUE宣言をカラムの定義セクションに入れる;作業例。

CREATE TABLE a (
    i INT,
    j INT,
    UNIQUE(i, j) ON CONFLICT REPLACE
);