2010-09-28 27 views
0

我有一些麻煩無效用戶每60天口令在我的Postgres數據庫:Postgres規則無效用戶密碼每60天

CREATE RULE user_expiration AS ON UPDATE TO users DO INSTEAD UPDATE user SET user_expires = user_expires + '60'

這樣會起作用,每次用戶改變時間的密碼,但是每次在記錄上發佈更新時它也都有效。我如何確保它只更新密碼更改事件?

回答

1

觸發器是一個更好的解決方案。從版本9.0開始,它每column triggers,觸發器只有當某個列已被更改時才觸發。在舊版本中,您必須在函數內部進行檢查,比較OLD.password和NEW.password,然後才能更新user_expires列。

+0

我想我也應該問一下,我們應該如何執行密碼更改? – Woot4Moo 2010-09-28 16:25:10

+0

如果你想強制執行一個新的密碼,如果OLD.password = NEW.password,那麼在你的觸發器函數中增加EXCEPTION。 – 2010-09-28 16:47:29

+0

謝謝15個字符 – Woot4Moo 2010-09-28 16:49:10