2013-07-12 4 views
85

Sto creando un database SQLite in Android.Imposta il valore predefinito di una colonna intera SQLite

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

È possibile impostare il valore predefinito di KEY_NOTE (che è un numero intero) per ogni riga creato per essere 0 (zero)? In tal caso, quale dovrebbe essere il codice corretto.

risposta

179

Usa la parola 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);"); 

Questo collegamento è utile: http://www.sqlite.org/lang_createtable.html

1

una colonna con valore predefinito:

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

<DefaultValue> è un segnaposto per un:

  • valore letterale
  • ( espressione )

Esempi:

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

Succede che sto appena cominciando a imparare la codifica e avevo bisogno simile come avete appena chiesto a SQLite (I´m using [SQLiteStudio] (3.1.1)).

Succede che è necessario definire il 'Constraint' come 'Non Null' quindi inserendo la tua definizione desiderata utilizzando 'predefinito' 'Constraint' o non funzionerà (I don' colonna so se questo è un SQLite o il programma richiesto).

Ecco il codice che ho usato:

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

E 'la stessa logica usata in MySQL; il valore predefinito di una colonna nullable è già NULL, quindi impostare un valore predefinito implicherebbe che la colonna non sia annullabile. Se si specifica un valore predefinito su una colonna nullable senza dichiararlo NOT NULL, potrebbe confondersi quando vengono inseriti valori NULL predefiniti. – Chosun