131 votes

Définir la valeur par défaut d'une colonne entière en SQLite

Je suis en train de créer une base de données SQLite.

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" 
    + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
    + KEY_NAME + " TEXT NOT NULL, " 
    + KEY_WORKED + " INTEGER, "
    + KEY_NOTE + " INTEGER);");

Est-il possible de définir la valeur par défaut de KEY_NOTE (qui est un nombre entier) pour chaque ligne créée pour être 0 (zéro) ? Si oui, quel devrait être le code correct ?

258voto

Karakuri Points 11241

Utilisez le mot-clé SQLite default

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" 
    + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
    + KEY_NAME + " TEXT NOT NULL, "
    + KEY_WORKED + " INTEGER, "
    + KEY_NOTE + " INTEGER DEFAULT 0);");

Ce lien est utile : http://www.sqlite.org/lang_createtable.html

10voto

ABFORCE Points 3280

Une colonne avec une valeur par défaut :

CREATE TABLE <TableName>(
...
<ColumnName> <Type> DEFAULT <DefaultValue>
...
)

<DefaultValue> est un substitut de a :

  • valeur littérale
  • ( expression )

Exemples :

Count INTEGER DEFAULT 0,
LastSeen TEXT DEFAULT (datetime('now'))

5voto

Nader Belal Points 125

Il se trouve que je commence tout juste à apprendre à coder et que j'avais besoin de quelque chose de similaire à ce que vous venez de demander en SQLite ( J'utilise [SQLiteStudio] (3.1.1). ).

Il se trouve que vous devez définir le paramètre ' Contrainte comme Non Null ' puis en entrant la définition souhaitée en utilisant ' Défaut ' ' Contrainte ou cela ne fonctionnera pas ( Je ne sais pas si c'est une exigence de SQLite ou du programme. ).

Voici le code que j'ai utilisé :

CREATE TABLE <MY_TABLE> (
<MY_TABLE_KEY>       INTEGER    UNIQUE
                                PRIMARY KEY,
<MY_TABLE_SERIAL>    TEXT       DEFAULT (<MY_VALUE>) 
                                NOT NULL
<THE_REST_COLUMNS>
);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X