これを見たときの私の最初の考えは、なぜあなたは本当にこれをしたいのですか?これは少し甘やかされたにおいがします。数日後に牛乳がするようなものです.
これら 2 つの seq が同じ値のままである必要があるシナリオは何ですか?
私が胃の中で感じている「これは少し奇妙に思える」という感情を無視して、これを試すことができます:
挿入時にこれを行うトリガーを table_a に配置します。-- b seq を a の値に設定します。
select setval('table_b_seq',currval('table_a_seq'));
このアプローチの問題は、table_a への挿入のみが table_a_seq 値を変更し、それ以外に table_a_seq をインクリメントしないと想定していることです。あなたがそれを受け入れることができるなら、これは本当にハックな方法で動作するかもしれません.
これが本当に必要な場合は、より堅牢にするために、関数などの table_a_seq をインクリメントする単一のインターフェイスを作成します。また、この関数を介した table_a_seq の操作のみを許可します。select setval('table_b_seq',currval('table_a_seq'));
そうすれば、table_a_seq をインクリメントする 1 つのインターフェイスがあり、その関数にも入れる必要があり
ます。そうすれば、table_b_seq は常に table_a_seq と等しくなるように設定されます。これは、ユーザーへの table_a_seq への許可をすべて削除し、新しい関数に対する実行許可のみをユーザーに許可することを意味します。