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 ...
随机推荐
- (2)socket的基础使用(基于TCP协议)
socket()模块函数用法 基于TCP协议的套接字程序 netstart -an | findstr 8080 #查看所有TCP和UDP协议的状态,用findstr进行过滤监听8080端口 服务端套 ...
- test20180919 递归问题
题意 定义 \[ f(n)=\left\{ \begin{array}{} 1 & n=1\\ f(n-f(f(n-1)))+1 & n>1 \end{array} \right ...
- Python模块之virtualenvwrapper
Python的virtualenv工具可以创建隔离的Python环境, virtualenvwrapper是virtualenv的进一步封装工具,可以让它更好用. 安装 Linux 系统下: pip ...
- 在Docker中运行crontab
在把自己的项目通过Docker进行打包时,由于项目中用到了crontab,不过使用到的基础镜像python:3.6-slim并没有安装这项服务,记录下在镜像中安装和配置crontab的过程. Dock ...
- sql 语句执行顺序
一.sql语句的执行步骤: 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2) 语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限. 3)视图转换,将涉及视图 ...
- leetcode -day28 Unique Binary Search Trees I II
1. Unique Binary Search Trees II Given n, generate all structurally unique BST's (binary search t ...
- Oracle误删除表空间的恢复
对于误删除表空间的恢复,本文通过基于数据库的时间点恢复和基于表空间的时间点恢复分别加以讨论 一 通过基于数据库的时间点恢复被误删除的表空间 1 需要注意的事项 a 基于数据库的时间点恢复将会回退整个数 ...
- centos7虚拟机安装出现license information
问题:vm 10下安装CentOs7后无法启动.出现一个license information页面 解决办法:出现license information,即说明需要同意许可信息,输入1-回车-2-回车 ...
- FineUI与百度地图简单示例 (转帖)
http://www.fineui.com/bbs/forum.php?mod=viewthread&tid=4191&extra=page%3D1 前台代码 <%@ Page ...
- JZ2440 裸机驱动 第9章 中断体系结构
本章目标: 了解ARM体系CPU的7种工作模式 了解S3C2410/S3C2440中断体系结构 掌握S3C2410/S3C2440的中断服务程序的编写方法 9.1 S3C241 ...