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