触发器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
序列
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;
需要了解更多数据库技术:oracle 触发器trigger(主键自增长),都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/dtteaching/797001.html