密码中没有特殊字符时例外



我正在尝试创建一个触发器,用于检查创建帐户的某些条件:密码应始终包含特殊字符。

我试过了,但不知怎么的,它不工作,还有什么其他特殊字符吗?

CREATE OR REPLACE TRIGGER checking
BEFORE INSERT ON account
FOR EACH ROW
DECLARE
passwSpecailChar_exception EXCEPTION;
passwSpecailCharF_exception EXCEPTION;
BEGIN
IF (:NEW.Passwort)LIKE '%[: @ . , / + - ! =]%' THEN 
RAISE passwSpecailChar_exception;
ELSE
RAISE passwSpecailCharF_exception;
END IF;
EXCEPTION
WHEN passwSpecailChar_exception THEN
dbms_output.put_line('Passwort acccept');
WHEN passwSpecailCharF_exception THEN
dbms_output.put_line('Password must contain at least one special character');
END ;

如果您的特殊字符是非字母数字和非空白字符,则:

CREATE OR REPLACE TRIGGER check_password_special_characters
BEFORE INSERT ON account
FOR EACH ROW
DECLARE
BEGIN
IF NOT REGEXP_LIKE(:NEW.Passwort, '[^[:alnum:][:blank:][:space:]]' ) THEN 
RAISE_APPLICATION_ERROR(-20000, 'No special characters');
END IF;
END check_password_special_characters;
/

您不希望捕获异常,因为您希望INSERT失败,并且您不希望使用DBMS_OUTPUT

db<此处小提琴>


顺便说一句,您不应该在数据库中存储纯文本密码,而应该对它们进行散列和盐处理。

最新更新