2013-07-12 32 views
85

Tôi đang tạo cơ sở dữ liệu SQLite trong Android.Đặt giá trị mặc định của một cột số nguyên SQLite

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

Có thể thiết lập giá trị mặc định của KEY_NOTE (đó là một số nguyên) cho mỗi dòng tạo ra để được 0 (zero)? Nếu có, mã nào là đúng.

Trả lời

179

Sử dụng từ khóa 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);"); 

liên kết này rất hữu ích: http://www.sqlite.org/lang_createtable.html

1

Một cột với giá trị mặc định:

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

<DefaultValue> là một giữ chỗ cho một:

    giá trị
  • đen
  • ( biểu )

Ví dụ:

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

Nó xảy ra mà tôi chỉ mới bắt đầu học hỏi mã hóa và tôi cần tương tự như bạn vừa hỏi trong SQLite (I´m using [SQLiteStudio] (3.1.1)).

Nó xảy ra mà bạn phải xác định của 'Constraint' là 'Không Null' sau đó nhập định nghĩa mong muốn của bạn sử dụng 'Mặc định' 'Constraint' hoặc nó sẽ không hoạt động (I don' cột t biết nếu đây là một SQLite hoặc yêu cầu chương trình).

Đây là mã tôi đã sử dụng:

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

Đó là cùng một logic được sử dụng trong MySQL; mặc định của một cột nullable đã là NULL, do đó, để thiết lập một mặc định khác sẽ ngụ ý cột là không nullable. Nếu bạn chỉ định một mặc định trên một cột nullable mà không khai báo nó NOT NULL, nó có thể gây nhầm lẫn cho bạn khi các giá trị NULL mặc định được chèn vào. – Chosun

Các vấn đề liên quan