PostgreSQL查询使用单个查询重命名和更改列类型

时间:2014-08-20 07:01:23

标签: sql postgresql

在PostgreSQL中,如果我需要重命名和更改列数据类型,我应该运行两个单独的查询来执行此操作。

重命名:

ALTER TABLE <tablename> RENAME <oldcolumn> TO <newcolumn> 

并更改列类型:

ALTER TABLE <tablename> ALTER COLUMN <columnname> <columntype>.

但有没有办法用单一查询来完成这两项工作,例如跟随MySQL查询:

ALTER TABLE <tableName> CHANGE COLUMN <oldcolumnname> <newcolumnname> <newtype>

2 个答案:

答案 0 :(得分:78)

在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>;

然而......为什么? IIRC重命名不会导致全表扫描,因此在一个事务中单独执行这两个语句没有任何好处。你实际上试图解决什么问题?

答案 1 :(得分:2)

PostgreSQL:更改表列名和数据类型:

ALTER TABLE <TableName> 
   ALTER [ COLUMN ] column [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
  RENAME [ COLUMN ] column TO new_column;

请参阅ALTER TABLE