web-dev-qa-db-fra.com

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

Je crée une base de données SQLite sous Android.

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 entier) pour chaque ligne créée comme étant 0 (zéro)? Si tel est le cas, quel devrait être le code correct?.

106
Born Again

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

210
Karakuri

Une colonne avec une valeur par défaut:

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

<DefaultValue> est un espace réservé pour un:

  • valeur littérale
  • ( expression )

Exemples:

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

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

Il arrive que vous deviez définir la colonne 'contrainte' as ' Non Null 'saisissez ensuite la définition de votre choix en utilisant' Par défaut '' Contrainte 'ou cela ne fonctionnera pas (. Je ne sais pas s’il s’agit d’un objet SQLite ou du programme requis ).

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>
);
2
Nader Belal