oracle sql触发器,以防止插入记录

时间:2013-10-05 16:30:21

标签: sql oracle stored-procedures triggers ddl

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中。问题是即使触发器已成功编译,触发器也不起作用。

1 个答案:

答案 0 :(得分:6)

恕我直言,您的方法是错误的 - 您不需要触发器进行如此简单的输入验证 - 仅使用约束。

ALTER TABLE employee ADD CONSTRAINT employee_salary CHECK (salary <= 1000000);

如果您确实想要使用触发器,则在提供无效输入时,您应该raise而不是return