2010-01-13 4 views
4

j'ai écrit quelque chose commeSqlite réglage de la valeur par défaut dans create table

create table if not exists QuickTest (
id integer primary key NOT NULL, 
a TEXT DEFAULT @0, 
b TEXT, 
c TEXT); 

Je reçois une erreur sur @ 0. Est-il possible d'insérer des paramètres ici ou dois-je coder en dur la valeur? J'aime généralement utiliser des paramètres lors du réglage des valeurs.

Répondre

5

Vous devez utiliser une chaîne de caractères constante ou NULL.

http://www.sqlite.org/syntaxdiagrams.html#column-constraint

La contrainte DEFAULT spécifie une valeur par défaut à utiliser lorsque vous faites une instruction INSERT. La valeur peut être NULL, une constante de chaîne, un nombre ou une expression constante entre parenthèses. La valeur par défaut peut également être l'un des mots-clés spéciaux CURRENT_TIME, CURRENT_DATE ou CURRENT_TIMESTAMP. Si la valeur est NULL, une constante ou un nombre de chaînes, elle est insérée dans la colonne chaque fois qu'une instruction INSERT qui ne spécifie pas de valeur pour la colonne est exécutée. Si la valeur est CURRENT_TIME, CURRENT_DATE ou CURRENT_TIMESTAMP, la date et/ou l'heure UTC en cours est insérée dans les colonnes. Pour CURRENT_TIME, le format est HH: MM: SS. Pour CURRENT_DATE, AAAA-MM-JJ. Le format de CURRENT_TIMESTAMP est "AAAA-MM-JJ HH: MM: SS".

+1

Je pense que vous dites qu'il doit être un littéral et je ne peux pas utiliser un espace réservé comme @ nom comme je le fais dans un insert/mise à jour/sélectionnez –

5

Vous ne pouvez pas utiliser de paramètres dans une instruction ddl (langage de définition de données), uniquement dans l'instruction dml (data manipulation language) et les instructions select sont des paramètres autorisés.

0

CREATE TABLE test (id INTEGER DEFAULT -1, nom VARCHAR DEFAULT na)

Au-dessus sql va créer un test de table avec deux colonnes id et le nom Lors de l'exécution d'insertion pour cette table si aucune valeur est spécifiée pour id et nom alors il insérera -1 pour la colonne id et na sera inséré pour le nom colonne

Questions connexes