在一个命令 SQL 中对单个列设置多个 alter 语句

Kla*_*au 1 postgresql ddl

我正在尝试在一个命令中修改列数据类型和名称。

是否可以在一个代码行的一列上应用多个 alter 语句?这是正确的语法吗?

ALTER TABLE tb_table
ALTER COLUMN colum_date 
SET DATA TYPE TIMESTAMP NOT NULL
RENAME COLUMN colum_date TO colum_timestamp;
Run Code Online (Sandbox Code Playgroud)

我一直在寻找相关的参考书目,但在网上找不到太多信息。

sti*_*bit 6

根据文档,重命名列是一个不能与其他操作组合的操作,但需要它自己的语句。所以不,你不能在一份声明中做你想做的事。

但您可以在一笔交易中完成。不过,设置数据类型和设置NOT NULL约束需要两个操作。但这两项操作都可以在一个声明中。

BEGIN TRANSACTION;
ALTER TABLE tb_table
            ALTER COLUMN colum_date 
                         SET DATA TYPE TIMESTAMP,
            ALTER COLUMN colum_date
                         SET NOT NULL;
ALTER TABLE tb_table
            RENAME COLUMN colum_date
                          TO colum_timestamp;
COMMIT TRANSACTION;
Run Code Online (Sandbox Code Playgroud)