2017-11-25 4 views
0

Ich versuche, eine Tabelle in sqlite3 zu erstellen, die Benutzerfeldauswahlen speichert und jede Kombination von user_id, table und name_id einzigartig macht. Folgendes wird mir „ERROR: in der Nähe von‚Allerdings läuft Tabelle‘: Syntaxfehler“sqlite3 einzigartig nach mehreren Kriterien

CREATE TABLE preftest (
'id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
'user_id' INTEGER NOT NULL, 
'table' TEXT NOT NULL, 
'name_id' INTEGER NOT NULL, 
CONSTRAINT userpref UNIQUE(user_id, table, name_id)) 

Gibt es ein Problem mit der Kombination von Text und Integer-Spalten in einer Unique-Einschränkung?

Antwort

2

table ist ein SQLite keyword.

Sie benötigen 'table' statt table in der Einschränkung zu verwenden:

CREATE TABLE preftest (
'id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
'user_id' INTEGER NOT NULL, 
'table' TEXT NOT NULL, 
'name_id' INTEGER NOT NULL, 
CONSTRAINT userpref UNIQUE(user_id, 'table', name_id)) 
+0

Richtig wäre es '„table“' und nicht ' 'table'', da Sie einen Namen zu zitieren und nicht ein wörtlich. [SQLite unterstützt auch] (https://www.sqlite.org/lang_keywords.html) '[Tabelle]' und '\' Tabelle \ '' obwohl dies keine Standard-SQL sind. –

Verwandte Themen