求一位大神,可以详细说明一下触发器和定时器。sql语句什么都都不需要,就是比较想知道为什么可以做到触发器和定时器的功能,如何做到的。需要详细了解一下,谢谢。小白不懂得比较多,麻烦大神们了
这个示例属于触发器的,触发器可以在做某件事情是,自动触发。定时器应该是你说的job的功能,建一个存储,设置一个job,定时跑你的存储。
CREATE OR REPLACE TRIGGER trg_add_emp_info
BEFORE INSERT
ON emp2
FOR EACH ROW
DECLARE
-- local variables here
BEGIN
SELECT seq_trg_id.NEXTVAL INTO :NEW.e_id FROM dual;
IF :NEW.e_sal < 0 THEN
:NEW.e_sal := 0;
ELSIF :NEW.e_sal > 10000 THEN
:NEW.e_sal := 10000;
END IF;
END;
触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。所以运行触发器就叫触发或点火(firing)。ORACLE事件指的是对数据库的表进行的INSERT、UPDATE及DELETE操作或对视图进行类似的操作。ORACLE将触发器的功能扩展到了触发ORACLE,如数据库的启动与关闭等。所以触发器常用来完成由数据库的完整性约束难以完成的复杂业务规则的约束,或用来监视对数据库的各种操作,实现审计的功能。
create sequence seq_userInfo_usid start with 1001;
create or replace triggle tri_userInfo_usid --创建或替换触发器tri_userInfo_usid
before insert on userInfo --在向userInfo表中添加 记录之前的触发
for each row --没影响一行出发一次
begin --触发之后执行下面的语句
select seq_userInfo_usid.nextval into :new.usid from dual; --:new新值 :old老值
end;