sql >> Database teknologi >  >> RDS >> SQLite

SQLite PRIMÆR nøgle AutoIncrement virker ikke

Fra dokumentation:

En tabel oprettet ved hjælp af CREATE TABLE AS har ingen PRIMÆR NØGLE og ingen begrænsninger af nogen art. Standardværdien for hver kolonne er NULL.

Du behøver ikke tilføje UNIQUE begrænsning på en KOLONNE, der har PRIMARY KEY begrænsning.
Forklaring:

En UNIK begrænsning svarer til en PRIMÆR NØGLE-begrænsning, bortset fra at en enkelt tabel kan have et hvilket som helst antal UNIKKE begrænsninger.

Tilføj i stedet NOT NULL .Det er derfor:

Ifølge SQL-standarden skal PRIMARY KEY altid antyde NOTNULL. På grund af en fejl i nogle tidlige versioner er dette desværre ikke tilfældet i SQLite. Medmindre kolonnen er en INTEGER PRIMARY KEY eller tabellen er en WITHOUT ROWID-tabel, eller kolonnen er erklæret NOT NULL, tillader SQLite NULL-værdier i en PRIMARY KEY-kolonne. SQLite kunne rettes til at være i overensstemmelse med standarden, men at gøre det kan ødelægge ældre applikationer. Derfor er det blevet besluttet blot at dokumentere det faktum, at SQLite tillader NULL i de fleste PRIMÆRE NØGLE-kolonner.


Jeg anbefaler at bruge denne kolonnedefinition:

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


  1. Sådan springer du rækker over, der overtræder begrænsninger, når du indsætter data i SQLite

  2. Funktion til at få antal hverdage mellem to datoer eksklusive helligdage

  3. Sådan opretter du forbindelse til MySQL ved hjælp af PHP

  4. Bliver den primære nøgle automatisk indekseret i MySQL?