CREATE OR REPLACE trigger million_trigger
BEFORE INSERT or UPDATE on employee
FOR EACH ROW
WHEN (new.SALARY>1000000)
BEGIN
if inserting then
RETURN ;
end if;
if updating then
RETURN ;
end if;
end;
/
BEGIN
PKG_insertrec.insertrec(121,'Mark',2000000);
END;
/
大家好,我写了一个触发器,以防止在SALARY高于1,000,000时插入记录。我已经编写了一个存储过程insertrec,它位于一个包PKG_insertrec中。问题是即使触发器已成功编译,触发器也不起作用。
答案 0 :(得分:6)
恕我直言,您的方法是错误的 - 您不需要触发器进行如此简单的输入验证 - 仅使用约束。
ALTER TABLE employee ADD CONSTRAINT employee_salary CHECK (salary <= 1000000);
如果您确实想要使用触发器,则在提供无效输入时,您应该raise
而不是return
。