簡體   English   中英

在postgres中使用變量和表名正確格式化執行更改

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM