Nid*_*oms 1 sql oracle ddl triggers stored-procedures
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;
/
Run Code Online (Sandbox Code Playgroud)
大家好,我写了一个触发器,以防止在SALARY高于1,000,000时插入记录.我已经编写了一个存储过程insertrec,它位于一个包PKG_insertrec中.问题是即使触发器已成功编译,触发器也不起作用.
恕我直言,你的方法是错误的 - 你不需要触发器来进行如此简单的输入验证 - 只是使用了约束.
ALTER TABLE employee ADD CONSTRAINT employee_salary CHECK (salary <= 1000000);
Run Code Online (Sandbox Code Playgroud)
如果您确实想使用触发器,则应该raise而不是return在给出无效输入时.
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |