정수 열의 기본값 설정 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(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에서 사용되는 것과 동일한 논리입니다. nullable 열의 기본값은 이미 NULL이므로 기본값을 설정하려면 열이 nullable이 아님을 의미합니다. NOT NULL을 선언하지 않고 nullable 열에 기본값을 지정하면 기본 NULL 값이 삽입 될 때 혼동을 줄 수 있습니다.
ChoNuff dec

1
UNIQUE 문은 필요하지 않으며 PRIMARY KEY 문에 이미 암시되어 있습니다.
dani

@dani 나는 당신과 동의하지만 SQLiteStudio 3.1.1 "독특한"상태의 부족에서 발생했다는 오류를 우회 할 수있는 유일한 방법이었다
네이더 베랄
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.