Oracle学习笔记 part5

触发器(trigger)

触发器的结构同函数和过程,效果如字面意思

create or replace trigger update_sora_tips_trigger
--指定在更新hls_test_sora表之后触发
after
    update on hls_test_sora;
--指定每行更改均触发
for each row;
begin
    --这里似乎不能写自定义函数
    dbms_output.put_line('更新了数据');
end;

 

触发器的old和new

old和new是触发器特有的参数,分别代表了修改之前与之后数据库表该行的一个record值

create or replace trigger delete_bak_for_sora
before delete on hls_test_sora
for each row
begin
    --每次删除hls_test_sora中的数据都会在hls_test_sora_bak中创建一个新的备份数据
    insert into hls_test_sora_bak VALUES
    --old代表DML操作之前,改行的值,new则相反
    (:old.test_id, :old.test_name, :old.test_age, :old.test_gender, :old.test_birthday);
end;

 

序列(sequence)

这是我们最后一个小结,序列在前面的部分也有所运用,主要的功能是提供一个自定义的序列

--创建一个循环自增从1到10的序列
create sequence seq_one_to_ten
increment by 1
start with 1
maxvalue 10
cycle
cache 9;
--tips:如果需要cycle循环,则要保证cache的值小于等于ceil(maxValue-start)/incremnet的值

 

使用序列

--seq_one_to_ten.nextval 表示序列指向下一个
--seq_one_to_ten.curval 表示序列指向当前
declare
    var number;
begin
    for i in 1..100 loop
        dbms_print(seq_one_to_ten.curval||seq_one_to_ten.nextval);
    end loop;
end;

 

更改和删除序列

--更改序列
alter sequence seq_one_to_ten
increment by 2;
​
--删除序列
drop sequence seq_one_to_ten

 

祝贺你看完了所有,让我们在下个笔记再见

posted @ 2021-12-10 10:46  二色莲华  阅读(52)  评论(0)    收藏  举报