ドキュメントから:
CREATE TABLE ASを使用して作成されたテーブルには、PRIMARYKEYおよびいかなる種類の制約もありません。各列のデフォルト値はNULLです。
UNIQUE
を追加する必要はありません PRIMARY KEY
を持つCOLUMNに対する制約 制約。
説明:
UNIQUE制約はPRIMARYKEY制約に似ていますが、単一のテーブルに任意の数のUNIQUE制約を含めることができる点が異なります。
代わりに、NOT NULL
を追加してください 。これが理由です:
SQL標準によれば、PRIMARYKEYは常にNOTNULLを意味する必要があります。残念ながら、一部の初期バージョンのバグのため、SQLiteではそうではありません。列がINTEGERPRIMARYKEYであるか、テーブルがWITHOUT ROWIDテーブルであるか、列がNOT NULLと宣言されていない限り、SQLiteはPRIMARYKEY列でNULL値を許可します。 SQLiteは標準に準拠するように修正できますが、そうするとレガシーアプリケーションが破損する可能性があります。したがって、SQLiteがほとんどのPRIMARYKEY列でNULLを許可しているという事実を単に文書化することにしました。
次の列定義を使用することをお勧めします:
CREATE TABLE conversations (
conversation_id INTEGER PRIMARY KEY NOT NULL AUTOINCREMENT,
...
}