私はalter tableを実行して、列に列を割り当てようとしていますnextval
自動インクリメントではありますが、この最後の部分。シーケンスは正常に作成され、所有者はすべて割り当てられ、table_a.id
はtable_a_id_seq
の所有者です。私はすでにtable_a_id_seq
を作成しました。postgresで変数とテーブル名を使ってexecute alterを適切にフォーマットする
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
でこの変更を正常に実行するにはどうすればよいですか?助けてくれてありがとう!
'sequence_schemaを選択し、SEQUENCE_NAME;'あなたはちょうどあなたがスキーマおよび配列を定義していることを確認してくださいだろう名前は?? –
** [DEMO](http://sqlfiddle.com/#!15/a1e04/1/2)**のようにsthを達成しますか? – lad2025
'nextval( '" myschema ".foo')'構文を使用していることを確認するだけです(検索パスにスキーマがない場合) –