oracle触发器trigger(主键自增长)

database

触发器trigger

触发器我们也可以认为是存储过程,是一种特殊的存储过程。

存储过程:有输入参数和输出参数,定义之后需要调用

触发器:没有输入参数和输出参数,定义之后无需调用,在适当的时候会自动执行。

适当的时候:触发器与表相关,当我们对这个相关的表中的数据进行DDL(数据的添加、修改、删除)操作的时候

 

存储过程

触发器

create proc proc_name

    --声明输入参数和输出参数

as

    --过程体

go

create trigger tri_student_delete on student for delete

as

   …

go

 

注:触发器是在对应的操作执行完成之后才执行的

 

SQLServer的数据字典中,提供了一张表deleted用户存储最后一次执行删除的数据

createtrigger tri_student_delete on student fordelete

as

print"这是我们的第一个触发器";

select*from deleted;

go

createtrigger tri_student_insert on student forinsert

as

print"这是tri_student_insert";

go

createtrigger tri_student_delete_insert on student forinsert,delete

as

print"触发器";

go

--删除一个学生信息,如果学生的年龄<21,则不进行删除

createtrigger tri_stu_delete on student fordelete

as

declare@ageint

select@age=sage from deleted--deleted存储执行删除的数据

if(@age<21)

begin

raiserror("学生年龄太小,手下留情!",18,11);

rollback;--撤销执行的操作

end

go

 

序列

Create Sequence gygddj_cfjczb_Sequence

Increment by1-- 每次加几个

start with1-- 从1开始计数

nomaxvalue -- 不设置最大值,设置最大值:maxvalue 9999

nocycle -- 一直累加,不循环

cache 10;

 

可以与序列配合使用(实现自增)

Createtrigger gygddj_cfjczb_Sequence before 

inserton gygddj_cfjczb for each row /*对每一行都检测是否触发*/

begin

select gygddj_cfjczb_Sequence.nextval into:New.AUTOID from dual;

end;

 

以上是 oracle触发器trigger(主键自增长) 的全部内容, 来源链接: utcz.com/z/531679.html

回到顶部