整数列SQLiteのデフォルト値を設定する


116

AndroidでSQLiteデータベースを作成しています。

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

KEY_NOTE作成されたすべての行の(整数である)のデフォルト値を0(ゼロ)に設定することは可能ですか?もしそうなら、何が正しいコードでなければなりません。

回答:


231

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

このリンクは役に立ちます:http : //www.sqlite.org/lang_createtable.html


8

デフォルト値のある列:

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

<DefaultValue> のプレースホルダーです:

  • 値リテラル
  • ( 表情 )

例:

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

3

たまたまコーディングを学び始めたばかりで、SQLiteで質問したのと同じようなものが必要でした([SQLiteStudio](3.1.1)を使用しています)。

列の ' Constraint 'を ' Not Null 'として定義する必要があり、次に ' Default ' ' Constraint ' を使用して目的の定義を入力する必要があります。そうしないと機能しませんこれがSQLiteであるかプログラム要件であるかわかりません))。

これが私が使ったコードです:

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

これは、MySQLで使用されるものと同じロジックです。NULL可能列のデフォルトはすでにNULLであるため、デフォルトを設定すると、列がNULL可能ではなくなります。NOT NULLを宣言せずにNULL可能列にデフォルトを指定すると、デフォルトのNULL値が挿入されるときに混乱する可能性があります。
ChoNuff 2017

1
UNIQUEステートメントは不要であり、PRIMARY KEYステートメントによって既に暗示されています。
ダニ

@dani私はあなたに同意しますが、SQLiteStudio 3.1.1が「ユニークな」状態の欠如から生成していたエラーを回避する唯一の方法でした
Nader Belal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.