我首先想到的是,爲什麼你真的想這樣做?這味道有點溺愛,有點像牛奶在幾天過期後就會出現。
什麼情況下需要這兩個seq保持相同的價值?
忽略「這似乎有點奇怪」的感受我得到我的胃,你可以試試這個:
放在表-A觸發,這是否在插入。 - 將b seq設置爲a的值。
select setval('table_b_seq',currval('table_a_seq'));
這種方法的問題是假設只有插入到表-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,並且僅授予他們執行新功能的授予權限。
當你寫你的序列時,是否有可能有一個序列值=其他,m,反之亦然? – 2010-03-25 17:19:56