我想从以下位置进行以下更改
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() ;
答案 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;