web-dev-qa-db-ja.com

SqliteのTEXT列にデフォルト値を設定するにはどうすればよいですか?

簡単なテーブルがあります。 TEXT列にデフォルト値を設定しようとしています。テーブルクエリは次のとおりです。

"CREATE TABLE book(_id INTEGER PRIMARY KEY AUTOINCREMENT, book_id TEXT NOT NULL DEFAULT '0', book_name TEXT NOT NULL);"   

テーブルを作成しますが、データを挿入しようとすると問題が発生します。 book_idの列のデフォルト値は0であると予想したため、私はbook_nameに本の名前を付けることだけを試みていました。ただし、そうではなく、null値が追加されるため、行は挿入されません。私もこのクエリを試しました:

"CREATE TABLE book(_id INTEGER PRIMARY KEY AUTOINCREMENT, book_id TEXT NOT NULL DEFAULT \'0\', book_name TEXT NOT NULL);"     

しかし、問題は同じままです。スタックオーバーフローを検索し、いくつかの回答を得ましたが、それらは古く、現在は機能していません。そのため、sqliteでデフォルト値をTEXT列に設定する方法が変更されました。前もって感謝します :)

[〜#〜]編集[〜#〜]
挿入ステートメントは次のとおりです。

database.insert("book", null, cv);    

ここでcvContentValuesのオブジェクトであり、列book_nameの値のみが含まれています。

5
Abir Hasan

テーブルを作成するときに、列のデフォルト値を指定できます。 ([〜#〜] alter [〜#〜]ステートメントを使用してデフォルトを追加できるようには見えないので、テーブルを再作成する必要があります。)

CREATE TABLE your_table_name
(MainContactName TEXT NOT NULL DEFAULT '')

の場合、

CREATE TABLE book(_id INTEGER PRIMARY KEY AUTOINCREMENT,book TEXT DEFAULT "abc");

ここで、デフォルト値が "abc"に設定されていることがわかります。

Sqlliteを確認してください ドキュメント

14
Amit Vaghela

テーブルを変更するには、

sqlitedbInstance.execSQL("alter table myTable add column Address TEXT DEFAULT 'ABC' ");
1
LincyTonita