随時翻訳を続けています。
ALTER TABLE
ALTER TABLE
| sql-statement ::= | ALTER TABLE [database-name .] table-name alteration |
| alteration ::= | RENAME TO new-table-name |
| alteration ::= | ADD [COLUMN] column-def |
ALTER TABLE コマンドの SQLite バージョンは、既存のテーブルの 名前の変更と新しいカラムの追加を可能にします。 カラムをテーブルから取り除く事は出来ません。
RENAME TO 構文は、 [database-name.]table-name ~ new-table-name で識別されるテーブルの名前変更のために使います。 このコマンドはアタッチされたデータベース間でテーブルを移動するためには使えません。 ただ同じデータベース上のテーブル名を変更するのみです。
名前変更したテーブルがトリガーやインデックスを持っている場合、 名前変更した後も、これらはテーブルと結びついたままです。 しかし、もし名前変更したテーブルを参照するトリガーによって実行されたビュー定義や ステートメントがあるなら、 これらが新しいテーブル名を使うように自動的に修正される事はありません。 もしこれを必要とするなら、トリガーあるいはビュー定義を手作業で 新しいテーブル名を使うようにドロップして再作成しなくてはなりません。
ADD [COLUMN] 構文は、既存のテーブルに新しいカラムを付け加えるために使います。 新しいカラムは、常に既存のカラムのリストの末尾に加えられます。 Column-def は以下の制約で、 CREATE TABLE ステートメントで許される形式の いずれでもとる事が出来ます。
- カラムは PRIMARY KEY や UNIQUE 制約を持たない。
- カラムは CURRENT_TIME、 CURRENT_DATE、 CURRENT_TIMESTAMP の 規定値を持たない。
- NOT NULL 制約が指定されている場合、 カラムは NULL 以外の規定値を持たなくてはならない。
ALTER TABLE コマンドの実行時間は、テーブルのデータ量に依存しません。 ALTER TABLE コマンドは1行しかないテーブルと同じくらい素早く1千万行あるテーブルで 実行されます。
ADD COLUMN がデータベースで実行された後 VACUUM されるまで、そのデータベースは SQLite バージョン 3.1.3 以前では読めません。