oracle 触发器trigger(主键自增长)[通俗易懂]

oracle 触发器trigger(主键自增长)[通俗易懂]触发器trigger 触发器我们也可以认为是存储过程,是一种特殊的存储过程。 存储过程:有输入参数和输出参数,定义之后需要调用 触发器:没有输入参数和输出参数,定义之后无需调用,在适当的时候会自动执行

触发器trigger

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

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

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

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

 

存储过程

触发器

create proc proc_name

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

as

    –过程体

go

create trigger tri_student_delete on student for delete

as

   …

go

 

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

 

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

create trigger tri_student_delete on student for delete

as

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

   select * from deleted;

go

 

 

create trigger tri_student_insert on student for insert

as

   print "这是tri_student_insert";

go

 

 

create trigger tri_student_delete_insert on student for insert,delete

as

   print "触发器";

go

 

 

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

create trigger tri_stu_delete on student for delete

as

   declare @age int

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

   if(@age<21)

   begin

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

      rollback;--撤销执行的操作

   end

go

代码100分

 

序列

代码100分Create Sequence gygddj_cfjczb_Sequence
 Increment by 1     -- 每次加几个 
 start with 1       -- 从1开始计数     
 nomaxvalue         -- 不设置最大值,设置最大值:maxvalue 9999  
 nocycle            -- 一直累加,不循环    
 cache 10; 

 

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

 Create trigger gygddj_cfjczb_Sequence before 
 insert on gygddj_cfjczb for each row /*对每一行都检测是否触发*/
 begin
 select gygddj_cfjczb_Sequence.nextval into:New.AUTOID from dual;
 end;

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10611.html

(0)
上一篇 2022-12-24
下一篇 2022-12-24

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注