今天来简单的说一下oracle数据库的触发器,存储过程,定时器,简单的例子来说明。
一 触发器
例子说明:为一个表添加一个触发器,这个触发器的作用,就是在每行插入前先设置id字段。
创建一个简单的表 create table test (id number,cur_time date);
创建一个序列
CREATE SEQUENCE test_sequence
INCREMENT BY 1 -- 每次加几个START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10 ; --缓存
创建一个触发器
create or replace trigger trigger_test_id
before insert on test --test 是表名
for each row -- 每行触发
declare
nextid number;
begin
IF :new.id IS NULL or :new.id=0 THEN --id是列名
select seq_test.nextval --SEQ_ID正是刚才创建的
into nextid
from sys.dual;
:new.id:=nextid;
end if;
插入数据
insert into test (cur_time)values (sysdate);
当每次插入数据之前,都会先给新的数据设置id
禁用和启用触发器
alter trigger trigger_test_id(触发器名称) disable;
alter trigger trigger_test_id(触发器名称) enable;
二 存储过程和定时器
现在我们创建一个简单的存储过程来给test表插入数据
创建存储过程
create or replace procedure test_into_test is
begin
insert into test (cur_time)values (sysdate);
end test_into_test;
创建定时器
declarejobno number;
begin
dbms_job.submit(
jobno,
what=>'test_into_test;', --定时器执行的内容,这里是去执行存储过程
INTERVAL =>'trunc(sysdate,''mi'') +1/(24*60) ' --时间间隔 这里是每分钟执行一次
);
commit;
end;
查询我们创建的定时器id
select job, what
from user_jobs a;
执行我们的定时器
begindbms_job.run(23);
end;
删除定时器
begin
dbms_job.remove(23);
end;
各位记住这只是最最简单的例子,只是帮助去理解 触发器,存储过程,定时器。