2012-03-30 17 views
9

sqlite3のテーブル内の既存の列のデフォルト値を変更するにはどうすればよいですか?sqlite3列のデフォルト値を変更する

は私がhiddenという名前のブール型のカラムでnotesという名前のテーブルを持っています。デフォルトはtrueに設定されています。これをfalseに設定します。

答えて

20

私はあなたがテーブル全体を交換することなくできるとは思わない。 fine manualから:

SQLのSQLiteがサポートされてい

コンプリートのALTER TABLEのサポート
のみRENAME TABLEを実装し、ALTER TABLEコマンドのCOLUMNバリアントを追加しないことを特徴としています。 DROP COLUMN、ALTER COLUMN、ADD CONSTRAINTなどの他の種類のALTER TABLE操作は省略されています。

したがって、SQLiteの既存の列を変更する方法はありません。私はhiddenの適切なデフォルトで新しいテーブルを作成し、すべてのデータをコピーして元のnotesテーブルをドロップし、次にrename the new oneをドロップしなければならないと思います。

SQLiteは意図的な機能の多くを省略することにより、リーンとどまります。

+1

この点で1点役立つかもしれません。 'drop table 'を実行する前に '.dump'を実行してスキーマのダンプとデータを取得してください。それを使用して、変更されたスキーマをすばやく作成し、データを取り込むことができます。 – codarrior

0

SQLiteデータベースブラウザは、あなたがそれで列を削除して、手動でsqlite3のコマンドラインツールを使用してデフォルトでカラムを追加することができますので、あなたは、列を削除することができます。

+0

残念ながら、これを達成するには、恐らくtempテーブルを作成するのと同様に、フードの下であらゆる種類の偽善を実行します。 http://stackoverflow.com/q/805363/32453 – rogerdpack

関連する問題