在PostgreSQL中,如果我需要重命名和更改列数据类型,则需要运行两个单独的查询。
重命名:
ALTER TABLE tblName RENAME <oldColumn> TO <newColumn>
并更改列类型:
ALTER TABLE tblName ALTER COLUMN <newColumn> <columnType>.
但是有什么方法可以通过单个查询来完成这两项工作,例如以下MySQL查询:
ALTER TABLE tblName CHANGE COLUMN <oldColumn> <newColumn> <columnType>
在PostgreSQL中,ALTER TABLE可以采取一系列操作。所以:
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重命名不会引起全表扫描,因此仅在一个事务中单独执行两个语句就没有任何好处。您实际上是想解决什么问题?