我試圖檢查登錄被插入到employee表中是否以某種格式給出,即:第一個字母是嚴格給定的 - x,然後是5個字母和兩個數字=> xlogin00。檢查字符串是否包含某些字符
CREATE OR REPLACE TRIGGER check_login
BEFORE INSERT OR UPDATE OF login ON employee
FOR EACH ROW
DECLARE
xlogin00 employee.login%TYPE;
prefix VARCHAR2(1);
name VARCHAR2(5);
number VARCHAR2(2);
BEGIN
xlogin00 := :new.login;
prefix := substr(xlogin00,1,1);
name := substr(xlogin00,2,5);
number := substr(xlogin00,7,2);
if(LENGTH(xlogin00) != 8) then
Raise_Application_Error (-20203, 'Error');
end if;
if(prefix != 'x') then
Raise_Application_Error (-20204, 'Error');
end if;
if NOT REGEXP_LIKE(name, '[^a-z]') then
Raise_Application_Error (-20204, 'Error');
end if;
if NOT REGEXP_LIKE(number, '[^0-9]') then
Raise_Application_Error (-20204, 'Error');
end if;
END;
似乎在我的代碼中工作的唯一東西是if(prefix != 'x')
。其他的東西根本不起作用。我究竟做錯了什麼?
請解釋正確的格式是什麼,以正確和不正確的值的例子。 –
哪個RDBMS是爲了這個?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –