Tetapkan nilai default SQLite kolom integer

116

Saya membuat database SQLite di android.

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

Apakah mungkin untuk menetapkan nilai default KEY_NOTE(yang merupakan integer) untuk setiap baris yang dibuat menjadi 0(nol)? Jika demikian, apa yang seharusnya menjadi kode yang benar.

Lahir lagi
sumber

Jawaban:

231

Gunakan kata kunci 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);");

Tautan ini berguna: http://www.sqlite.org/lang_createtable.html

Karakuri
sumber
8

Kolom dengan nilai default:

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

<DefaultValue> adalah placeholder untuk:

  • nilai literal
  • ( ekspresi )

Contoh:

Count INTEGER DEFAULT 0,
LastSeen TEXT DEFAULT (datetime('now'))
frogatto.dll
sumber
3

Kebetulan saya baru mulai belajar coding dan saya membutuhkan sesuatu yang serupa seperti yang baru saja Anda tanyakan di SQLite ( Saya menggunakan [SQLiteStudio] (3.1.1) ).

Itu terjadi bahwa Anda harus mendefinisikan ' Batasan ' kolom sebagai ' Tidak Null ' kemudian memasukkan definisi yang Anda inginkan menggunakan ' Default ' ' Batasan ' atau itu tidak akan berfungsi ( saya tidak tahu apakah ini SQLite atau persyaratan program ).

Ini kode yang saya gunakan:

CREATE TABLE <MY_TABLE> (
<MY_TABLE_KEY>       INTEGER    UNIQUE
                                PRIMARY KEY,
<MY_TABLE_SERIAL>    TEXT       DEFAULT (<MY_VALUE>) 
                                NOT NULL
<THE_REST_COLUMNS>
);
Nader Belal
sumber
Ini adalah logika yang sama yang digunakan di MySQL; default dari kolom nullable sudah NULL, jadi untuk menetapkan default jika tidak, berarti kolom tersebut tidak dapat null. Jika Anda menentukan default pada kolom nullable tanpa mendeklarasikannya NOT NULL, ini mungkin membingungkan Anda saat nilai NULL default dimasukkan.
ChoNuff
1
Pernyataan UNIQUE tidak diperlukan dan sudah tersirat oleh pernyataan PRIMARY KEY.
dani
@dani Saya setuju dengan Anda, tetapi itu adalah satu-satunya cara untuk melewati kesalahan yang dihasilkan SQLiteStudio 3.1.1 dari kurangnya kondisi "Unik"
Nader Belal