[英]Properly formatting an execute alter with variable and table name in postgres
我正在嘗試在alter table上執行,以將一列分配給nextval
序列以進行自動增量,但似乎無法弄清楚如何完成最后一部分。 序列創建精細,業主都asigned,並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
上成功執行此更改? 謝謝您的幫助!
將格式說明符%L
用作文字:
EXECUTE format(
'ALTER TABLE ONLY %s ALTER COLUMN id SET DEFAULT nextval(%L::regclass)',
new_table_name,
new_seq_name);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.