sql >> Databasteknik >  >> RDS >> SQLite

SQLite PRIMARY key AutoIncrement fungerar inte

Från dokumentation:

En tabell skapad med CREATE TABLE AS har ingen PRIMÄRKEY och inga begränsningar av något slag. Standardvärdet för varje kolumn är NULL.

Du behöver inte lägga till UNIQUE begränsning på en KOLUMN som har PRIMARY KEY begränsning.
Förklaring:

En UNIK begränsning liknar en PRIMARY KEY-begränsning, förutom att en enda tabell kan ha valfritt antal UNIKA begränsningar.

Lägg istället till NOT NULL .Det är därför:

Enligt SQL-standarden ska PRIMARY KEY alltid innebära NOTNULL. Tyvärr, på grund av en bugg i vissa tidiga versioner, är detta inte fallet i SQLite. Såvida inte kolumnen är en INTEGER PRIMARY KEY eller thetable är en WITHOUT ROWID-tabell eller kolumnen deklareras som NOT NULL, tillåter SQLite NULL-värden i en PRIMARY KEY-kolumn. SQLite skulle kunna fixas för att överensstämma med standarden, men att göra det kan bryta äldre applikationer. Därför har det beslutats att bara dokumentera det faktum att SQLite tillåter NULL i de flesta PRIMÄRKEY-kolumner.


Jag rekommenderar att du använder denna kolumndefinition:

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


  1. Vad är DATALENGTH()-ekvivalenten i MySQL?

  2. 2 exempeldatabaser för SQLite

  3. Hur man får UTC-värde för SYSDATE på Oracle

  4. Hur fungerar indexering