テーブルの列を変更 ALTER TABLE、ALTER COLUMN、TYPE
テーブルの列(カラム)の変数のタイプ(データタイプ)、オプションの規則を変更するには、ALTER TABLE と ALTER COLUMN コマンドの組み合わせを使用します。
ここではカラムのデータタイプを変更する方法を紹介します。データタイプを変更するには TYPE を指定します。
ALTER TABLE table_name ALTER COLUMN column_name TYPE column_type;
- ad -
Example
例えば、テーブルを作成しそのotherカラムのデータタイプを変更します。まず以下のようなテーブルを用意します。
以下はPostgreSQLでの使い方です。
CREATE TABLE example_table ( id INT ,title varchar(16) ,other INT );
テーブルのカラムを確認してみます。
=> \d example_table Table "public.example_table" Column | Type | Collation | Nullable | Default --------+-----------------------+-----------+----------+--------- id | integer | | | title | character varying(16) | | | other | integer | | |
ALTER、ALTERコマンドでotherカラムのタイプを変更します。
ALTER TABLE example_table ALTER COLUMN other TYPE VARCHAR(8);
変更されたかテーブルのレコードを確認してみます。
=> \d example_table Table "public.example_table" Column | Type | Collation | Nullable | Default --------+-----------------------+-----------+----------+--------- id | integer | | | title | character varying(16) | | | other | character varying(8) | | |
テーブルの列のタイプを変更するにはALTER TABLE、ALTER COLUMNとTYPEを組み合わせます。 カラムのタイプによっては変更できない場合があります。
例えば、上記のotherカラムをINTタイプに変更するとします。
=> ALTER TABLE example_table ALTER COLUMN other TYPE INT; ERROR: column "other" cannot be cast automatically to type integer HINT: You might need to specify "USING other::integer".
このようなエラーが出ることがあります。
このHINTのようにコマンドを実行することができますが、変更されるカラムデータをINT型に強制的に変更します。データ値が変ることに注意が必要です。
=> ALTER TABLE example_table ALTER COLUMN other TYPE INT USING other::integer;