---------------------触发器-----------------------------
--触发器本质上还是一个存储过程,trigger
--只不过不是通过exec调用执行,而是通过增删改查数据库的操作来触发
--针对主外键表操作时 将关联的表一起修改
--触发器 方便记忆的命名格式:Tr(缩写)_(表名)_(增/删/改)
--instead of 在...之前  等于 替换操作,只执行触发器里面的语句
--for (after) 在...之后  先执行语句在执行触发器内的语句
select *from Student--学生信息alter trigger Tr_student_delete
on student
instead of delete
asdelete from score where sno=109delete from Student where Sno=109
go
delete from Student where Sno=109--------------------参数-------------------------
create trigger tr_dongtai
on teacher
instead of delete
as
begindeclare @tno char(10)set @tno=(select tno from deleted)--deleted虚拟表,update teacher set tname='刘燕' where tno=@tno
end
go
drop trigger tr_dongtai
select * from Teacher
delete from Teacher where Tno='804'
-----------------------------------------
create trigger tr_teacher_insert
on teacher
for insert
as
begindeclare @tno varchar(50)set @tno =(select tno from inserted)delete from teachar where tno=@tno
end
--------------------禁用,开启
alter table teacher disable trigger all--禁用所有触发器
alter table teacher enable trigger all--开启所有触发器
--all改成触发器名 可以开启或禁用单个触发器---------------------------------
select *from Teacher--教师信息
select *from Course--课程信息
select *from Score--分数,课程
select *from Student--学生信息
----------------------事务------------------------
--if @@error>0  每一句语句后可以加一个if,然后跟上goto 直接跳转到这里(事务名)
--如果只在最后加if,则尝试执行完所有的命令语句,如果有错则回滚事务。
--goto TranRollBack(goto 后面只是一个事务名)
begin tran--开始事务,每个语句都会尝试执行,
insert into student values ('111','张三','男','1988-1-8','95033')
if @@error>0--@@error 上一次的错误,0表示没错,不等于0表示有错
goto Back--goto,跳转到.(事务名).地方
insert into Course values ('3-105','语文','804')
if @@error>0
goto Back
insert into score values ('111','3-105',98)
if @@error>0
begin --如果任何一条有错误 则回滚事务,等于没有执行过这些语句
Back:--事务名
rollback tran--回滚事务,
end
else--没有错误
begin
commit tran --提交
end

----------------------------------------------

消息输出:

(1 行受影响)  --尝试插入了一行数据,但是后面有的语句出错,所以回滚事务, 表没有收到影响
消息 2627,级别 14,状态 1,第 5 行
违反了 PRIMARY KEY 约束 'PK__Course__C1FE637307020F21'。不能在对象 'dbo.Course' 中插入重复键。
语句已终止。

转载于:https://www.cnblogs.com/Tirisfal/p/4095041.html

20141113--SQL 事务相关推荐

  1. 【概念原理】四种SQL事务隔离级别和事务ACID特性

    2019独角兽企业重金招聘Python工程师标准>>> 事务是一组读写操作,并且具有只有所有操作都成功才算成功的特性. 事务隔离级别 SQL事务隔离级别由弱到强分别是:READ_UN ...

  2. 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁

    阅读目录 概述: 一.事务 二.锁 三.阻塞 四.隔离级别 五.死锁 以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. ...

  3. (4.12)全面解析-SQL事务+隔离级别+阻塞+死锁

    30分钟全面解析-SQL事务+隔离级别+阻塞+死锁 转自:https://blog.csdn.net/slowlifes/article/details/52752735 2016年10月07日 23 ...

  4. [转]SQL事务回滚的问题及其解决的方法

    [转]SQL事务回滚的问题及其解决的方法 原文:http://shirlly.javaeye.com/blog/370973 Begin Transaction:开始一个事务: Commit Tran ...

  5. SQL事务与ADO.NET事务

    1 SQL事务    sql事务是使用SQL server自身的事务:在存储过程中直接使用Begin Tran,Rollback Tran,Commit Tran实现事务: 优点:执行效率最佳 限制: ...

  6. (六)sql事务的处理commit,rollback的用法总结

    (六)sql事务的处理commit,rollback的用法总结 1. 事务处理 事务的存在是为了保持数据的一致性.要么全做,要么全不做. mysql中数据是自动提交的,可以使用set autocomm ...

  7. sql 事务提交和回滚_SQL提交和回滚

    sql 事务提交和回滚 The most important aspect of a database is the ability to store data and the ability to ...

  8. sql事务(Transaction)用法介绍及回滚实例

    sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...

  9. SQL 事务及实例演示

    简介 事务,英文名称是transaction.是在对数据库进行管理操作过程中一个逻辑单位,由有限的操作序列构成. 其实这个概念很好懂,简单理解就是:事务就是在使用数据库中的一个操作,由一些操作放到一起 ...

  10. SQL 事务日志已满

    SQL 事务日志已满: alter database Featechdata set recovery simple

最新文章

  1. 一文告诉你,如何使用Python构建一个“谷歌搜索”系统 | 内附代码
  2. Linux入门第四集!Jar包的入门、使用、部署!怎么打Jar包?
  3. python数学建模基础教程_Python数学建模极简入门(二)差分方程
  4. react native与webview通信跳转页面报错:Cannot read property 'setNativeProps' of undefiend
  5. java有什么字符串_Java 中操作字符串都有哪些类?它们之间有什么区别
  6. 机器人动力学与控制_大负载协作机器人难关怎么攻克?3大技术细节解析!
  7. 多模态之ViLBERT:双流网络,各自为王
  8. 最新微软Windows Server 2008之一 系统安装
  9. 计算机系大学生为什么选择在CSDN写博客?
  10. Python读写Excel实现大量数据处理
  11. 打印机如何扫描纸转换成pdf
  12. js实现类似栈和队列的行为,以及push和unshift两个方法的性能测试
  13. so 对XXX未定义的引用
  14. 数据结构与算法_c#_猎豹网校
  15. mysql必知必会的数据_MySQL必知必会--汇 总 数 据
  16. 触目惊心!2017年化工行业事故203起死亡238人!附重大事件回顾
  17. 《算法笔记》总结及练习
  18. BIEE Hello World式的例子
  19. 如何快速做一个微信自动拉群机器人 足够简单 足够粗暴
  20. 计算机毕业设计(附源码)python医院疫情管理系统

热门文章

  1. 高德坐标转百度坐标并导航
  2. struts2:表单标签
  3. flex 错误信息类型及解决方法
  4. 软件工程革命 三部曲 —— 前传
  5. c++语言 xml数据绑定技术简介
  6. Python实现代码行数统计工具
  7. 设置eclipse中xml的默认编辑器、行数、xsd和dtd
  8. java 将 ResultSet 转化为 json格式
  9. Shiro-从数据表中初始化资源和权限
  10. C#设计模式之二十一访问者模式(Visitor Pattern)【行为型】