如何在PostgreSQL中修改列类型并设置其默认值和当前值

时间:2019-07-11 19:16:20

标签: postgresql

我想从以下位置进行以下更改

CREATE TABLE IF NOT EXISTS scheme.xxx (
    id SERIAL PRIMARY KEY,

CREATE TABLE IF NOT EXISTS scheme.xxx (
    id UUID DEFAULT uuid_generate_v4(),

在具有记录的现有表中,但我无法实现。

一个不起作用的示例是:

ALTER TABLE scheme.xxx
    ALTER COLUMN id TYPE UUID SET DEFAULT uuid_generate_v4()
        USING id::uuid_generate_v4() ;

1 个答案:

答案 0 :(得分:0)

您必须先删除默认值,然后更改类型,然后添加新的默认值。

但是首先找出顺序:

SELECT pg_get_serial_sequence('scheme.xxx', 'id');

 pg_get_serial_sequence 
------------------------
 scheme.xxx_id_seq
(1 row)

现在开始:

ALTER TABLE scheme.xxx
   ALTER id DROP DEFAULT,
   ALTER id TYPE uuid USING uuid_generate_v4(),
   ALTER id SET DEFAULT uuid_generate_v4();

一言以蔽之!

现在摆脱序列:

DROP SEQUENCE public.xxx_id_seq;