1. ホーム
  2. sql

[解決済み] PostgreSQLのクエリで、1つのクエリで列の名前を変更し、列のタイプを変更することができます。

2022-03-07 09:48:40

質問

PostgreSQLで、カラムの名前を変更したりデータ型を変更したりする必要がある場合、2つの別々のクエリを実行しています。

名前を変更する場合。

ALTER TABLE tblName RENAME <oldColumn> TO <newColumn> 

で、カラムの種類を変更します。

ALTER TABLE tblName ALTER COLUMN <newColumn> <columnType>.

しかし、以下のMySQLクエリのように、1つのクエリでこれら2つの作業を行う方法はないでしょうか?

ALTER TABLE tblName CHANGE COLUMN <oldColumn> <newColumn> <columnType>

解決方法は?

PostgreSQLの場合。 ALTER TABLE は一連の操作を取ることができます。だから

ALTER TABLE <tablename> RENAME <oldcolumn> TO <newcolumn>;
ALTER TABLE <tablename> ALTER COLUMN <columnname> TYPE <newtype>;

と同じです。

ALTER TABLE <tablename> 
  ALTER COLUMN <columnname> TYPE <newtype>
  RENAME <oldcolumn> TO <newcolumn>;

しかし...なぜ?IRCでは、名前の変更はフルテーブルスキャンを引き起こさないので、1つのトランザクション内で2つのステートメントを別々に実行する以上の利点はありません。この処理で解決しようとする問題は何ですか?