2016-11-17 69 views
0

我寫了下面的功能:匹配的正則表達式中的if語句中的PostgreSQL

CREATE FUNCTION Validate_Password_Hash() RETURNS trigger AS $$ 
BEGIN 
    IF (NEW.Password ~* '^[a-f0-9]{64}$') 
    THEN 
     RAISE EXCEPTION 'The password hash is invalid! Please use SHA-256. You tried to insert: %', NEW.Password; 
    END IF; 
    RETURN NEW; 
END; 
$$ LANGUAGE PLPGSQL; 

而且我把它連接到一個觸發的INSERT之前解僱。但是,即使提供了有效的SHA-256散列,異常仍然會引發,這意味着散列與模式不匹配。這裏可能是什麼問題?

回答

1

反轉邏輯。 如果散列有效,則引發異常。

試試這個:

CREATE FUNCTION Validate_Password_Hash() RETURNS trigger AS $$ 
BEGIN 
    IF (NEW.Password !~* '^[a-f0-9]{64}$') 
    THEN 
     RAISE EXCEPTION 'The password hash is invalid! Please use SHA-256. You tried to insert: %', NEW.Password; 
    END IF; 
    RETURN NEW; 
END; 
$$ LANGUAGE PLPGSQL; 
+0

呵呵我傻,當然。謝謝 :) – SalysBruoga