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

如何在postgresql中修改列类型并设置其默认值和当前值,postgresql,Postgresql,我想执行以下更改,从 CREATE TABLE IF NOT EXISTS scheme.xxx ( id SERIAL PRIMARY KEY, 到 在一个已有记录的表中,但我无法实现它 一个不起作用的例子是: ALTER TABLE scheme.xxx ALTER COLUMN id TYPE UUID SET DEFAULT uuid_generate_v4() USING id::uuid_generate_v4() ; 您必须先删除默认值,然后更改

我想执行以下更改,从

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

在一个已有记录的表中,但我无法实现它

一个不起作用的例子是:

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

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

但首先要找出顺序:

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

 pg_get_serial_sequence 
------------------------
 scheme.xxx_id_seq
(1 row)
DROP SEQUENCE public.xxx_id_seq;
现在做吧:

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

现在,去掉序列:

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

 pg_get_serial_sequence 
------------------------
 scheme.xxx_id_seq
(1 row)
DROP SEQUENCE public.xxx_id_seq;

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

但首先要找出顺序:

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

 pg_get_serial_sequence 
------------------------
 scheme.xxx_id_seq
(1 row)
DROP SEQUENCE public.xxx_id_seq;
现在做吧:

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

现在,去掉序列:

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

 pg_get_serial_sequence 
------------------------
 scheme.xxx_id_seq
(1 row)
DROP SEQUENCE public.xxx_id_seq;