当前位置: 首页 > news >正文

数据库11(触发器)

触发器有三种类型,包括删除触发器,更新触发器,添加触发器
触发器的作用是:当某个表发生某个操作时,自动触发触发器,进行触发器规定的操作

触发器语句

create trigger tname --创建触发器
on aa --创建在表上
for delete --创建在某个数据操作(增删改)上,insert/delete/update
as
begin
print ‘do delete’
end

delete aa
where title_id=‘PC9999’
加入该触发器后,对aa进行删除操作时会自动打印do delete语句
删除一行会触发一次,删除整表或多行也只触发一次,
即使没有符合删除条件的数据可以删除,该删除操作也会触发触发器
当操作可以满足多个触发器触发条件时,会有多个触发器同时被触发,进行相应操作

修改触发器:
alter trigger tname
……
修改触发器,只能在同一个表上,不可以修改表,如果表对象改变,需要新建一个触发器

触发器内部临时存储结构

触发器内部有临时存储结构,能够存储当前增删改操作的临时信息,是一个固定特殊临时的表,表名有deleted inserted,表示存储当前删除/增加/更新操作的临时信息
create trigger tname1
on aa
for delete
as
begin
declare @tempword varchar(50)
set @tempword=(select title from deleted)
print 'the deleted book is '+@tempword

print ‘do delete’
end

delete aa
where title_id=‘PC8888’

在触发器内部自定义变量,设置变量初始值为 被删除的对象的title列
打印返回结果,可以看到删除的title内容是什么
但是,自定义变量的方式只能由来进行单行数据的查询
如果同时对多个数据进行了删除操作,那么就不可以使用自定义变量
需要用到游标

practice

对jobs表的insert操作触发器进行修改,当输入的min_lvl>max_lvl时,两者互换,修正错误
alter trigger tname
on jobs
for insert
as
begin
declare @jobid int,@jobdcrp varchar(100),@min int,@max int
set @jobid=(select job_id from inserted)
set @jobdcrp=(select job_desc from inserted)
set @min=(select min_lvl from inserted)
set @max=(select max_lvl from inserted)

if @min>@max
begin
update jobs
set min_lvl=@max,set max_lvl=@min
where job_id=@jobid
print ‘I exchange it’
end

else
begin
print 'the inserted job_desc is ‘+cast(@jobid as varchar(10))+’ '+@jobdcrp
end
end

insert into jobs(job_desc,min_lvl,max_lvl)
values(‘new name’,50,15)
select * from jobs

相关文章:

  • 跨平台软件开发探讨
  • 三目云台转动性能稳定性
  • 动态显微镜数据分析及AI拓展
  • 第50讲:AI+农业金融与风险预测场景实战
  • Centos9安装docker
  • spark和hadoop之间的对比关系和联系
  • 《MySQL:MySQL表的内外连接》
  • 线程入门3
  • es 自动补全
  • Available platform plugins are: xcb.报错解决办法
  • 2026《数据结构》考研复习笔记六(串的KMP算法)
  • 4.多表查询
  • Vue3集成百度实时语音识别
  • 工业相机中CCM使能参数-色彩校正矩阵
  • MYSQL-库的基本操作
  • SpringBoot项目,密码加密之“BCrypt加密”
  • SSM公廉租房维保系统
  • 多智能体系统的中间件架构
  • 策略模式:动态切换算法的设计智慧
  • 在Linux中如何通过nohup命令监控进程状态
  • 特写|“三峡千古情”出圈,一场演出给宜昌留下更多游客
  • 著名诗人、中国城市发展研究院原常务副院长吕贵品逝世
  • 吃菜和吃肉,哪个更“增肌”?
  • 甘肃省政府原副省长赵金云严重职务违法被开除公职
  • 校友伉俪捐赠10亿元!成立复旦大学学敏高等研究院
  • “动漫短剧”值不值得做?