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.

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


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'))

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>
);

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.