2011-12-12 25 views
0

我是觸發器的新手。 我有一個function,我用它來檢查密碼是否有效,返回boolean的值。只有在值爲真時才能觸發觸發器嗎? (這將根據成功的密碼檢查更新last_login_time)。基於函數返回值的PostgreSQL觸發器

PS我使用PostgreSQL 9.0.4

是否有可能寫出這樣的觸發?

+1

你用什麼樣的過程來記錄人們?觸發器是通過在表上插入,更新或刪除來觸發的,但我猜測你沒有執行任何這些操作。 –

回答

1

不,但您可以在觸發器中再次檢查密碼,並在驗證後執行所需的邏輯。觸發器只能在INSERT,UPDATE或DELETE之後或之前觸發,或者在每行或整個語句之後觸發。沒有辦法有條件地觸發某種類型的AFAIK觸發器。

編輯: CREATE TRIGGER語句中有一個WHEN子句,它允許指定觸發器應該觸發的條件,但是您必須檢查條件中的驗證條件,該條件等同於我在上面發佈的條件,只含有句法糖。

儘管如此,這可能是應該在存儲過程或DB之外完成的事情。

+1

從版本9開始,有['WHEN'](http://www.postgresql.org/docs/current/interactive/sql-createtrigger.html)用於調整觸發觸發條件。 –

+0

WHEN的問題在於OP將不得不調用驗證函數來計算條件,這相當於在觸發器函數的開始處放置if。我會更新答案。 – soulcheck

+0

@ muistooshort但後來也許這就是他正在尋找的。更新。 – soulcheck