首页 > 代码库 > 20141113--SQL 事务
20141113--SQL 事务
---------------------触发器-------------------------------触发器本质上还是一个存储过程,trigger--只不过不是通过exec调用执行,而是通过增删改查数据库的操作来触发--针对主外键表操作时 将关联的表一起修改--触发器 方便记忆的命名格式:Tr(缩写)_(表名)_(增/删/改)--instead of 在...之前 等于 替换操作,只执行触发器里面的语句--for (after) 在...之后 先执行语句在执行触发器内的语句select *from Student--学生信息alter trigger Tr_student_deleteon studentinstead of deleteas delete from score where sno=109 delete from Student where Sno=109godelete from Student where Sno=109--------------------参数-------------------------create trigger tr_dongtaion teacherinstead of deleteasbegin declare @tno char(10) set @tno=(select tno from deleted)--deleted虚拟表, update teacher set tname=‘刘燕‘ where tno=@tnoendgodrop trigger tr_dongtaiselect * from Teacherdelete from Teacher where Tno=‘804‘-----------------------------------------create trigger tr_teacher_inserton teacher for insertasbegin declare @tno varchar(50) set @tno =(select tno from inserted) delete from teachar where tno=@tnoend--------------------禁用,开启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>0goto Backinsert into score values (‘111‘,‘3-105‘,98)if @@error>0begin --如果任何一条有错误 则回滚事务,等于没有执行过这些语句Back:--事务名rollback tran--回滚事务,endelse--没有错误begincommit tran --提交end
----------------------------------------------
消息输出:
(1 行受影响) --尝试插入了一行数据,但是后面有的语句出错,所以回滚事务, 表没有收到影响
消息 2627,级别 14,状态 1,第 5 行
违反了 PRIMARY KEY 约束 ‘PK__Course__C1FE637307020F21‘。不能在对象 ‘dbo.Course‘ 中插入重复键。
语句已终止。
20141113--SQL 事务
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。