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