SQLite-tabelbeperking – uniek voor meerdere kolommen

Ik kan hierover syntaxis-diagrammen vinden op de SQLite-website, maar geen voorbeelden en mijn code crasht. Ik heb andere tabellen met unieke beperkingen voor een enkele kolom, maar ik wil een beperking toevoegen aan de tabel voor twee kolommen. Dit is wat ik heb dat een SQLiteException veroorzaakt met het bericht “syntaxisfout”.

CREATE TABLE name (column defs) 
UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE

Ik doe dit op basis van het volgende:

tabel-constraint

Voor alle duidelijkheid, de documentatie op de link die ik heb verstrekt zegt dat CONTSTRAINT namevóór mijn beperkingsdefinitie moet komen.

Iets dat echter tot de oplossing kan leiden, is dat alles wat volgt op mijn kolomdefinities tussen haakjes, is waar de debugger over klaagt.

Als ik

. plaats

...last_column_name last_col_datatype) CONSTRAINT ...

de fout is in de buurt van “CONSTRAINT”: syntaxisfout

Als ik

. plaats

...last_column_name last_col_datatype) UNIQUE ...

de fout is in de buurt van “UNIQUE”: syntaxisfout


Antwoord 1, autoriteit 100%

Plaats de UNIQUE-declaratie in de kolomdefinitiesectie; werkend voorbeeld:

CREATE TABLE a (
    i INT,
    j INT,
    UNIQUE(i, j) ON CONFLICT REPLACE
);

Antwoord 2, autoriteit 3%

Nou, je syntaxis komt niet overeen met de link die je hebt toegevoegd, die specificeert:

CREATE TABLE name (column defs) 
    CONSTRAINT constraint_name    -- This is new
    UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE

Antwoord 3, autoriteit 2%

Als je al een tabel hebt en deze om welke reden dan ook niet opnieuw kunt/wilt maken, gebruik dan indexen:

CREATE UNIQUE INDEX my_index ON my_table(col_1, col_2);

Other episodes