·触发器(trigger)

【触发器本质上还是一个存储过程,只不过不是用exe来调用执行,而是通过增删改数据库的操作】

【触发器只对增、删、改有效】

触发器的格式

(instead of与for的区别 如下)

instead of:

create trigger 触发器名(TR_表名_操作)

on 表名

instead of 增或删或改

--当为instead of时,go下的代码不执行只起到触发的作用,只执行as里面的代码

as

as里面随便写代码

go

go下的代码只能是 增或删或改

for:

create trigger 触发器名(TR_表名_操作)

on 表名

for增或删或改

--当为for时,go下的代码先执行操作,再执行as里面的代码

as

as里面随便写代码

go

go下的代码只能是 增或删或改

写触发器时,go下面代码中的增删改和表名,与on后面的表名instead of或者for后面的增删改差要一致,否则无法触发

例子:(在触发器中可以有参数)

Instead of实用:

create trigger dongtaichufa

on teacher

instead of delete

as

begin

declare @tno varchar(20)

set @tno=(select tno from deleted)--deleted的作用是储存临时数据(存储的是tno为的一行数据),@tno=tno的含义是获取教师工号

delete from teacher where tno=@tno--删除这一条数据

end

go

delete from teacher where tno= '831'

for实用:

create trigger tr_dongtai

on teacher

for insert

as

begin

declare @tno varchar(20)--定义一个变量

set @tno=(select tno from inserted)--inserted的作用是临时存储数据,(存储要插入的一行数据),@tno的含义是获取要插入的教师的编号

delete from teacher where tno=@tno --删除刚刚插入的一行数据

end

go

insert into teacher values('810','王五','男','1991-1-1','讲师','电子工程系')

视图(view)

1、视图窗口创建视图步骤:1·数据库名-->右键视图(新建视图)-->2·添加要连接的表-->3·选择要添加的列名

【代码创建视图】:

格式为:

create view 视图名

as

select 表名.列名,表名.列名,表名.列名,表名.列名 from 表名 join 表名 on 表名.列名=表名.列名

--------------例如:

没用视图如下

用代码创建视图为:

create view shitu

as

select student.sno,sname,ssex,sbirthday,class,course.cno,cname,degree,tno from

student join score on student.sno=score.sno join course on score.cno=course.cno

事务

Begin  tran----开始事务

Commit---提交

Rollback---回滚事务

---事务(在begin tran里面有多个代码,如果有一个发生错误,则全部停止,并返回begin tran开始处)

实例:

begin tran--事务的开始

  insert into student values('110','hh','aa','1987/1/12',5788)     —插入第一个数据为主键,110没有重复的,正确

if @@ERROR >0     --全局变量,判断上一句中是否有错,返回0没有错,不等于0则发生错误

goto tr       --如果发生错误,则跳转到名字为tr的一行(goto后面的只是个名字而已)

  insert into course  values('3-105','计算机',825)     --第一个3-105则为外键,发生错误,表中有3-105

if @@ERROR >0

begin

tr:     --接上面的tr

  rollback tran     --回滚到tran开始处

end

else      --如果没有错误的话

begin

  commit tran      --提交事务,接着往下运行

end

最新文章

  1. 项目vue2.0仿外卖APP(六)
  2. Java 判断整数方法
  3. c# winform DataGridView单击选中一整行,只能单选,不能选择多行,只能选择一行
  4. LazyLoad使用注意
  5. SSAS:菜鸟摸门
  6. 使用PDO进行sql的预处理和操作结果集
  7. 【CodeForces 520E】Pluses everywhere
  8. 《JS高程》事件学习笔记
  9. Jmeter 快速入门教程(三-3) -- 使用参数化
  10. 你可能不知道的Linux/GNU bash sort多列排序功能
  11. Mediator 模式
  12. 算法录 之 BFS和DFS
  13. How to find SPRO path by t-code name
  14. python入门-基础语法
  15. Starting MySQL....The server quit without updating PID file[失败]/lib/mysql/ip12189.pid). 错误一例
  16. ORACLE中用户等系统信息操作
  17. function [eigf,eigv,dof]=laplaceeig(node,elem,problem)
  18. Install-DedupCore.component 的内容
  19. Xcode 5.0 编译低版本app
  20. 关于AM335X移植SDIO WIFI的简易教程(转)

热门文章

  1. hibernate中session,HQL,持久化,一对多,多对一
  2. jsp界面动态时间显示
  3. Java模拟网站登录02【转载】
  4. php openssl 生成公私钥,根据网上文章整理的
  5. java源码部署
  6. Codeforces 278C Learning Languages(并查集)
  7. iOS开发——网络编程Swift篇&(七)NSURLSession详解
  8. Python学习 之 对内存的使用(浅拷贝和深拷贝)
  9. 文本编辑器Nano实用快捷键
  10. Linux环境变量的修改(永久,暂时)