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

4

1 回答 1

6

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

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

如果你真的想使用触发器,你应该raise而不是return在给出无效输入时。

于 2013-10-05T16:38:44.693 回答