2016-11-03 1 views
1

J'essaye d'ajouter une contrainte à une de mes colonnes, cependant j'obtiens ce message d'erreur "missing right parenthesis". Ce n'est pas la première fois que je reçois ce message, mais je suis assez nouveau pour SQL, donc ma syntaxe n'est pas à la hauteur.SQL: Vérifier les erreurs de syntaxe des contraintes?

CREATE TABLE FAGFELT 
(
bok varchar (255) PRIMARY KEY, 
felt varchar (255) 
CREATE CONSTRAINT chk_felt CHECK (felt IN("databaser", "programmering", "matematikk", "statistikk", "kjemi", "fysikk")) 
); 
+0

'ADD' est pour 'ALTER'. Vous n'en avez pas besoin dans 'CREATE'. Voir des exemples ici: http://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqlj13590.html#rrefsqlj13590 –

+0

Noté, merci! Je vais éditer mon post. Toujours obtenir ce message d'erreur qui me manque parenthèse droite tho. – Peter

+3

Les chaînes sont délimitées par des guillemets simples et non par des guillemets doubles. Donc "base de données" devrait être "base de données" en supposant que vous avez l'intention d'être un littéral de chaîne. Je suppose que vous voulez créer une contrainte hors-ligne, donc vous voudriez avoir une virgule après le 'varchar (255)' et supprimer le 'create' de' create constraint'. –

Répondre

0

Le create constraint est faux, et les constantes de chaîne doivent être fournis dans des guillemets simples '. Les guillemets " sont pour les identificateurs

CREATE TABLE FAGFELT 
(
    bok varchar (255) PRIMARY KEY, 
    felt varchar (255), --<< you need a comma here 
    CONSTRAINT chk_felt 
     CHECK (felt IN('databaser', 'programmering', 'matematikk', 'statistikk', 'kjemi', 'fysikk')) 
);