触发器

意义:本质上就是一个特殊的存储过程,只不过不是通过exec来调用执行,而是通过增删改数据库中的操作来执行。

作用:1、将关联的表之间的数据增删改
        2、触发器可以操作视图,在视图上建触发器
        3、忘记建立触发器的表的名称,全部禁用

alter table teacher disable trigger all--忘记名字的禁用表的全部触发器,记得名字将all改成表的名称
       alter table teacher enable trigger all --开启数据表的所有触发器

----创建触发器

格式:

create trigger TR_(表名)_(增/删/改操作)

on +(表名)

for,after/instead of +(增/删/改操作)---这里的操作必须同创建的触发器的名称中的增删改操作保持一致

as

--执行触发器的整个过程

go

(增/删/改操作) from (表名) where(条件)  ---增删改必须和上面的增删改操作一致

【注意事项1】

for与instead of 的区别:

for/after --是指在执行删除操作之后引发触发,for可以使用after代替。

instead of--是指在触发之前删除,当删除时先引发触发器,用触发器里的操作替换本来的操作。

【注意事项2】

1、在操作时,注意在使用触发器时要将增删改操作保持一致。

2、当关联的表之间存在主外键约束的情况下,不能直接删除主键表的数据,需要先把外键表的数据删除才可以。

【实例1】

create trigger TR_student_Delete  ---创建触发器
 on student---选择在哪个表上建立触发器
 --for delete   --原因:for 在执行删除之后引发触发,for可以用after代替
 instead  of delete --instead of +delecte/insert/update
 --instead of 在触发之前删除,当删除时先引发触发器,用触发器里的操作替换本来的操作
 as
    --delete from score where sno='109'  ---书写存储过程
      insert into student values('108','曾华','男','1977-09-01',‘教授’,‘计算机系’)
      --delete from student where sno='109'
 go
delete from student where Sno='109'---当表与表之间存在主外键约束时,主键表的数据不能删除
select *from huizong

【注意】当出现以上错误时,是因为student表和score表之间存在主外键约束,所以不能直接对主键表进行增删改操作。

正确方法:首先将外键表score表中Sno=‘109’这一列数据删除之后再对主键表操作。

---删除(用instead of)

---删除(用for)

---修改(用 instead of)

---修改(用 for)

---插入(用 for)

---插入(用 instead of)

【实例2】

【案例3】在teacher表中插入一行数据,改变插入的数据中 tno=王五的性别。

最新文章

  1. C# IComparable接口、IComparer接口和CompareTo(Object x)方法、Compare()方法
  2. springMVC中 request请求数据绑定到Controller入参 过程剖析
  3. css技巧收集
  4. linux apache 自动监护脚本
  5. (三)用Normal Equation拟合Liner Regression模型
  6. Swift中类的初始化器与继承
  7. 【BZOJ1216】操作系统(堆,模拟)
  8. Java小技巧输出26个英文字母
  9. CRMEB 商城系统常见错误修复办法
  10. 机器学习入门15 - 训练神经网络 (Training Neural Networks)
  11. Spring的诞生
  12. linux查看进程已经运行了多长时间
  13. SVN问题之——org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir(网摘文)
  14. 【php+uploadify3.2】上传按钮点击一点反应都没有,原因
  15. Centos下Kubernetes+Flannel部署(新)
  16. Vitamio视频播放器
  17. Randcher 2.0部署K8s集群(一)
  18. JavaScript---详解cookie
  19. SpringMVC源码解析- HandlerAdapter - ModelFactory
  20. AVA + Spectron + JavaScript 对 JS 编写的客户端进行自动化测试

热门文章

  1. web 资源好文
  2. 【vue】vue-cli 脚手架项目简介(一) - package.json
  3. systemd开机启动
  4. 使用systemd严格保证启动顺序
  5. BAT 批处理脚本教程
  6. java 报错及解决
  7. mysql常用语法操作
  8. java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/java8/JFunction1$mcII$sp
  9. linux非root用户执行开机启动程序
  10. Sql Server Report Service 的部署问题