SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite PRIMARY key AutoIncrement funktioniert nicht

Aus Dokumentation:

Eine mit CREATE TABLE AS erstellte Tabelle hat keinen PRIMARY KEY und keinerlei Einschränkungen. Der Standardwert jeder Spalte ist NULL.

Sie müssen UNIQUE nicht hinzufügen Beschränkung auf eine SPALTE, die PRIMARY KEY hat Einschränkung.
Erklärung:

Eine UNIQUE-Einschränkung ähnelt einer PRIMARY KEY-Einschränkung, mit der Ausnahme, dass eine einzelne Tabelle eine beliebige Anzahl von UNIQUE-Einschränkungen haben kann.

Fügen Sie stattdessen NOT NULL hinzu .Darum:

Gemäß dem SQL-Standard sollte PRIMARY KEY immer NOTNULL implizieren. Leider ist dies aufgrund eines Fehlers in einigen frühen Versionen in SQLite nicht der Fall. Sofern die Spalte kein INTEGER PRIMARY KEY ist oder die Tabelle eine WITHOUT ROWID-Tabelle ist oder die Spalte als NOT NULL deklariert ist, erlaubt SQLite NULL-Werte in einer PRIMARY KEY-Spalte. SQLite könnte korrigiert werden, um dem Standard zu entsprechen, aber dadurch könnten Legacy-Anwendungen beschädigt werden. Daher wurde entschieden, lediglich die Tatsache zu dokumentieren, dass SQLite NULLen in den meisten PRIMARY KEY-Spalten zulässt.


Ich empfehle die Verwendung dieser Spaltendefinition:

CREATE TABLE conversations (
    conversation_id INTEGER PRIMARY KEY NOT NULL AUTOINCREMENT,
...
}