0
我必须使用此触发器才能在插入Oracle数据库之前检查电子邮件。代码中有错误,但我无法找到它。任何人都知道我可以修复它吗?我知道我可以使用一个简单的约束,但在我的大学他们希望我使用这个。Oracle - 触发器错误
create or replace TRIGGER email_check
BEFORE INSERT
ON CLIENTS
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
tmpVar NUMBER;
TOTCOUNT NUMBER;
FIND1 NUMBER:= 0;
FIND2 NUMBER:= 0;
BEGIN
tmpVar:= 0;
SELECT CLIENT_SEQ.NEXTVAL INTO tmpVar
From dual;
:NEW.CLIENT_ID := tmpVar;
FIND1 := INSTR(:NEW.EMAIL,'@',1,1);
FIND2 := INSTR(:NEW.EMAIL,'.',1,1);
IF FIND1 > 0 AND FIND2 > 0 THEN * NEW.CLIENT_ID := CLIENT_SEQ.NEXTVAL
ELSE
RAISE_APPLICATION_ERROR(-20101,'Mail Address Problem');
END IF;
是现在的作品谢谢!在我的语法错误旁边,是什么问题?触发器是错误的? – NikosL24
@ NikosL24 - 我提到了答案中所做的所有更改。 – GurV
如果instr(:new.email,'@',1,1)> 0和instr(:new.email,'。',1,1)> 0'只是一个精心设计的版本if: new.email比如'%[email protected]_%._%''? (这实际上更彻底,因为'.''等应该被拒绝。) –