【问题标题】:oracle sql trigger to prevent insertion of recordoracle sql触发器以防止插入记录
【发布时间】:2013-10-12 13:28:40
【问题描述】:
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 中。问题是,即使成功编译触发器,触发器也不起作用。

【问题讨论】:

  • 为什么,它有效。它什么也不做;)
  • 我不希望存储过程执行插入语句

标签: sql oracle stored-procedures triggers ddl


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2018-12-02
    相关资源
    最近更新 更多