我正在尝试在alter table上执行以将列分配给序列nextval
以进行自动增量,但似乎无法弄清楚如何执行此最后一部分。序列创建正常,所有者都已签名,table_a.id
是table_a_id_seq
的所有者。我已经创建了table_a_id_seq
。
在postgres sql函数中,如何正确格式化。
我试过了:
EXECUTE format('ALTER TABLE ONLY %s ALTER COLUMN id SET DEFAULT nextval($1::regclass)', new_table_name) USING new_seq_name;
但是它说$ 1并没有指向new_table_seq_name
。
我也试过了:
EXECUTE format('ALTER TABLE ONLY %s ALTER COLUMN id SET DEFAULT nextval("%s"::regclass)', new_table_name, new_seq_name);
但它告诉我序列不存在,这让我想知道它是否需要在这个语句分隔的事务后面。
如何在new_table_name
成功执行此更改?谢谢你的帮助!
答案 0 :(得分:0)
使用the format specifier %L
作为文字:
EXECUTE format(
'ALTER TABLE ONLY %s ALTER COLUMN id SET DEFAULT nextval(%L::regclass)',
new_table_name,
new_seq_name);