11-11SQLserver基础--数据库之触发器
触发器
意义:本质上就是一个特殊的存储过程,只不过不是通过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=王五的性别。

11-11SQLserver基础--数据库之触发器的更多相关文章
- MySQL/MariaDB数据库的触发器
		MySQL/MariaDB数据库的触发器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.触发器概述 1>.什么是触发器 触发器的执行不是由程序调用,也不是由手工启动,而是 ... 
- 在Oracle 11.2的数据库中建表时遇到 RESULT_CACHE (MODE DEFAULT)  ORA-00922: missing or invalid option
		在Oracle 11.2的数据库中建表时遇到 RESULT_CACHE (MODE DEFAULT) ORA-00922: missing or invalid option hostdr:[/ho ... 
- 第二百八十四节,MySQL数据库-MySQL触发器
		MySQL数据库-MySQL触发器 对某个表进行[增/删/改]操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行[增/删/改]前后的行为. 1.创建触发器基本语法 ... 
- Mysql数据库的触发器、存储引擎和存储过程
		数据库的触发器 1.触发器 触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句): DELETE,INSERT,UPDATE 我们可以监视某表 ... 
- 每天进步一点点------基础实验_08_触发器 :D、T触发器各一
		/********************************************************************************* * Company : * Eng ... 
- plsql 数据库事件触发器
		--4.数据库事件触发器 需要超管的权限 /* 数据库事件触发器有数据库级和模式级两种. 前者定义在整个数据库上,触发事件是数据库事件,如数据库的启动.关闭,对数据库的登录或退出. 后者定义在模式上, ... 
- 阿里P7整理“硬核”面试文档:Java基础+数据库+算法+框架技术等
		现在的程序员越来越多,大部分的程序员都想着自己能够进入大厂工作,但每个人的能力都是有差距的,所以并不是人人都能跨进BATJ.即使如此,但身在职场的我们一刻也不能懈怠,既然对BATJ好奇,那么就要朝这个 ... 
- OCA读书笔记(11) - 实现Oracle数据库审计
		11 Implementing Oracle Database Auditing 描述DBA对于安全和审计的职责使能标准的数据库审计安全审计选项查看审计信息维护审计路径 最小权限原则只在计算机上安装所 ... 
- sqlserver2008r2数据库使用触发器对sa及其他数据库账号访问进行IP限制
		一.只允许指定IP访问数据库 创建测试账号 CREATE LOGIN testuser WITH PASSWORD = '123' GO CREATE TRIGGER [tr_connection_l ... 
随机推荐
- c++hook全局触控事件
			https://gist.github.com/vbfox/1339671 namespace BlackFox { using System; using System.ComponentModel ... 
- GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-
			今天更新为163的源后,yum的时候报错:GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gp ... 
- sdut2165 Crack Mathmen (山东省第二届ACM省赛)
			版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/svitter/article/details/24270265 本文出自:http://blog.c ... 
- Telnet 工具远程连接服务器
			1.启动tomcat 2. 使用telnet命令 打开CMD,输入telnet localhost 8080 3.显示如下界面,说明已经连接成功 4. 复制如下代码到连接成功的界面 HEAD / ... 
- R(5): sql 数据处理
			sqldf程序包是R语言中实用的数据管理辅助工具,但最新版本的包在处理中文时出现乱码,待解决 Usage: sqldf(x, stringsAsFactors = FALSE, row.names ... 
- 【appium】根据id定位元素
			目前没有尝试成功,等成功后补充 id=Resource Id,可以通过UIAutomatorViewer获得.如果目标设备的API Level低于18则UIAutomatorViewer不能获得对应的 ... 
- 【android】[转]Android软件测试的日志文件抓取简介
			1 log文件分类简介 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志 状态信息的有:adb s ... 
- spring boot学习(2) SpringBoot 项目属性配置
			第一节:项目内置属性 application.properties配置整个项目的,相当于以前的web.xml: 注意到上一节的访问HelloWorld时,项目路径也没有加:直接是http://loca ... 
- 一款easyUI写的界面例子,小记
			后台是用strut2的: 前台界面风格easyUI,感觉挺好用的: <!DOCTYPE html> <html> <head> <meta charset=& ... 
- 杂项:GitHub
			ylbtech-杂项:GitHub gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub. gitHub于2008年4月10日正式上线, ... 
