sql >> Database >  >> RDS >> SQLite

SQLite PRIMARY key AutoIncrement werkt niet

Uit documentatie:

Een tabel die is gemaakt met CREATE TABLE AS heeft geen PRIMARY KEY en geen enkele vorm van beperkingen. De standaardwaarde van elke kolom is NULL.

U hoeft UNIQUE niet toe te voegen beperking op een KOLOM met PRIMARY KEY beperking.
Uitleg:

Een UNIQUE-beperking is vergelijkbaar met een PRIMARY KEY-beperking, behalve dat een enkele tabel een willekeurig aantal UNIQUE-beperkingen kan hebben.

Voeg in plaats daarvan NOT NULL . toe .Dit is waarom:

Volgens de SQL-standaard moet PRIMARY KEY altijd NOTNULL betekenen. Helaas is dit vanwege een bug in sommige vroege versies niet het geval in SQLite. Tenzij de kolom een ​​INTEGER PRIMARY KEY is of de tabel een WITHOUT ROWID-tabel is of de kolom NOT NULL is gedeclareerd, staat SQLite NULL-waarden toe in een PRIMARY KEY-kolom. SQLite zou kunnen worden aangepast om te voldoen aan de standaard, maar dit kan legacy-applicaties kapot maken. Daarom is besloten om alleen het feit te documenteren dat SQLite NULL's toestaat in de meeste PRIMARY KEY-kolommen.


Ik raad aan om deze kolomdefinitie te gebruiken:

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


  1. Retourneer SETOF-rijen van de PostgreSQL-functie

  2. Door komma's gescheiden waarden splitsen in Oracle

  3. OracleCommand SQL-parameters Binding

  4. Null-waarden vergelijken in MySQL