sqliteの列を変更するにはどうすればよいですか?これはPostgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
sqliteにはALTERCOLUMNはまったくなく、ALTERTABLEのみがサポートされていると思います。
何か案が?ありがとう!
sqliteの列を変更するにはどうすればよいですか?これはPostgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
sqliteにはALTERCOLUMNはまったくなく、ALTERTABLEのみがサポートされていると思います。
何か案が?ありがとう!
回答:
sqliteにはALTERCOLUMNはありません。
私はあなたの唯一の選択肢は次のとおりだと信じています:
この他のStackoverflowの回答は、プロセスを詳細に説明しています
がALTERCOLUMNではないことは事実ですが、列の名前を変更したり、NOT NULL制約を削除したり、データ型を変更したりするだけの場合は、次の一連の危険なコマンドを使用できます。
PRAGMA writable_schema = 1;
UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE BOOKS ( title TEXT NOT NULL, publication_date TEXT)' WHERE NAME = 'BOOKS';
PRAGMA writable_schema = 0;
変更をスキーマに再ロードするには、接続を閉じて再度開くか、データベースをバキュームする必要があります。
例えば:
Y:\> **sqlite3 booktest**
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> **create table BOOKS ( title TEXT NOT NULL, publication_date TEXT NOT
NULL);**
sqlite> **insert into BOOKS VALUES ("NULLTEST",null);**
Error: BOOKS.publication_date may not be NULL
sqlite> **PRAGMA writable_schema = 1;**
sqlite> **UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE BOOKS ( title TEXT NOT
NULL, publication_date TEXT)' WHERE NAME = 'BOOKS';**
sqlite> **PRAGMA writable_schema = 0;**
sqlite> **.q**
Y:\> **sqlite3 booktest**
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> **insert into BOOKS VALUES ("NULLTEST",null);**
sqlite> **.q**
以下の参考資料:
プラグマwritable_schema
このプラグマがオンの場合、通常のUPDATE、INSERT、およびDELETEステートメントを使用してデータベースを変更できるSQLITE_MASTERテーブル。警告:このプラグマを誤用すると、データベースファイルが簡単に破損する可能性があります。
[alter table](http://www.sqlite.org/lang_altertable.htmlから)
SQLiteはALTERTABLEの限定されたサブセットをサポートします。SQLiteのALTERTABLEコマンドを使用すると、ユーザーはテーブルの名前を変更したり、既存のテーブルに新しい列を追加したりできます。列の名前を変更したり、列を削除したり、テーブルに制約を追加または削除したりすることはできません。
SQLiteは、ALTERTABLEの限定されたサブセットをサポートします。SQLiteのALTERTABLEコマンドを使用すると、ユーザーはテーブルの名前を変更したり、既存のテーブルに新しい列を追加したりできます。列の名前を変更したり、列を削除したり、テーブルに制約を追加または削除したりすることはできません。ただし、次の手順でテーブル列のデータ型またはその他のプロパティを変更できます。