Моя первая мысль, увидев это, почему вы действительно хотите это сделать? Это пахнет немного испорченным, как молоко после истечения нескольких дней.
Каков сценарий, который требует, чтобы эти два seq оставались в том же самом значении?
Не обращая внимания на "это кажется немного странным" чувство, которое я испытываю в животе, вы можете попробовать это:
Поставьте триггер на table_a, который делает это при вставке.
--set 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 через эту функцию. Таким образом, есть один интерфейс для увеличения table_a_seq, и вы должны также поставить
select setval('table_b_seq',currval('table_a_seq'));
в эту функцию. Таким образом, несмотря ни на что, table_b_seq всегда будет установлен равным table_a_seq. Это означает удаление любых разрешений пользователям table_a_seq и только предоставление им прав на выполнение новой функции.