20141113--SQL 事务
---------------------触发器-----------------------------
--触发器本质上还是一个存储过程,trigger
--只不过不是通过exec调用执行,而是通过增删改查数据库的操作来触发
--针对主外键表操作时 将关联的表一起修改
--触发器 方便记忆的命名格式:Tr(缩写)_(表名)_(增/删/改)
--instead of 在...之前 等于 替换操作,只执行触发器里面的语句
--for (after) 在...之后 先执行语句在执行触发器内的语句
select *from Student--学生信息 alter trigger Tr_student_delete
on student
instead of delete
as
delete from score where sno=109
delete from Student where Sno=109
go
delete from Student where Sno=109 --------------------参数-------------------------
create trigger tr_dongtai
on teacher
instead of delete
as
begin
declare @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=''
-----------------------------------------
create trigger tr_teacher_insert
on teacher
for insert
as
begin
declare @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 ('','张三','男','1988-1-8','')
if @@error>0--@@error 上一次的错误,0表示没错,不等于0表示有错
goto Back--goto,跳转到.(事务名).地方
insert into Course values ('3-105','语文','')
if @@error>0
goto Back
insert into score values ('','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' 中插入重复键。
语句已终止。
20141113--SQL 事务的更多相关文章
- Mysql - 游标/动态sql/事务
		
游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...
 - 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁
		
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
 - sql事务(Transaction)用法介绍及回滚实例
		
sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...
 - sql事务的调用
		
一.数据库的SQL USE [Text]GO/****** Object: StoredProcedure [dbo].[mon] Script Date: 2017-01-03 15:59:28 * ...
 - SQL事务
		
一.事务概念 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是一个不可分割的工作逻辑单元.在数据库系统上执行并发操作时事务是作为最小的 ...
 - SQL—— 事务
		
SQL 事务: 1. 定义: 事务是作为单个逻辑单元执行的一系列操作. 多个操作作为一个整体向系统提交,要么执行.要么都不执行,事务是一个不可分割的工作逻辑单元.这特别适用于多用户同时操作的数据通信 ...
 - SQL 事务及实例演示
		
简介 事务,英文名称是transaction.是在对数据库进行管理操作过程中一个逻辑单位,由有限的操作序列构成. 其实这个概念很好懂,简单理解就是:事务就是在使用数据库中的一个操作,由一些操作放到一起 ...
 - sql事务,在sql2000里判断执行是否成功用@@ERROR 判断
		
原文:sql事务,在sql2000里判断执行是否成功用@@ERROR 判断 贴个sql事务,在sql2000里判断执行是否成功用@@ERROR 判断 这个东西多少还是有点问题,sql2005了可以用t ...
 - sql 事务日志传输
		
原文:sql 事务日志传输 概述 可以使用日志传送将事务日志不间断地从一个数据库(主数据库)发送到另一个数据库(辅助数据库).不间断地备份主数据库中的事务日志,然后将它们复制并还原到辅助数据库,这将使 ...
 - 图解 sql 事务隔离级别
		
sql 事务隔离级别有四种分种为: 一 Read Uncpommitted(未提交读) 二 Read Committed(提交读) 三 Repeated Read(可重复读) 四 Serializab ...
 
随机推荐
- cocos2d-x学习之自动内存管理
			
一.自动内存管理 1)概述 C++语言默认是没有提供自动内存管理的.使用者需要自己分配,自己释放.在cocos2d-x里提供了一个自动内存管理的方案.主要是通过CCObject来提供的,用户只要继承了 ...
 - 实现O(1)获取最大最小值的栈----java
			
原文:http://blog.csdn.net/sheepmu/article/details/38459165 实现O(1)获取最大最小值的栈和队列----java 一.如何实现包含获取最小值函数的 ...
 - c++ 设计模式1
			
从面向对象谈起 1) 底层思维:向下,如何把握及其底层,从微观理解对象构造 (语言构造.编译转换.内存模型.运行时机制) 抽象思维: 向上,如何将我们的周围世界抽象为程序代码 (面向对象.组件封装 ...
 - UIView 的transitionFromView方法实现视图切换
			
#import "ViewController.h" @interface ViewController () @property (strong, nonatomic) IBOu ...
 - 【阿里云产品公测】云引擎ACE初体验
			
作者:阿里云用户蓝色之鹰 :RYYjmG5; 来投票支持我把=i2]qj\ 序号2. [阿里云产品公测]云引擎ACE初体验:作者:蓝色之鹰 e(OKE7 序号10.[阿里云产品公测]结构化数据服 ...
 - swift 委托代理传值
			
委托代理 1.定义个协议 2.声明一个委托代理 3.指定委托代理,调用委托实现的协议方法 4实现LoadingDelegate协议 代码如下: import UIKit //1.定义个协议 proto ...
 - Android学习笔记⑤——UI组件的学习TextView相关
			
TextView是一个强大的视图组件,直接继承了View,同时也派生出了很多子类,TextView其作用说白了就是在布局中显示文本,有点像Swing编程中的JLabel标签,但是他比JLabel强大的 ...
 - Oracle 经典语法(四)
			
1. 各个部门平均.最大.最小工资.人数,按照部门号升序排列.SELECT deptno AS 部门号,AVG(sal) AS 平均工资 ,MAX(sal) AS 最高工资,MIN(sal) AS ...
 - Oracle  常用命令大全
			
一.如何有效地利用数据字典 ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图.数据字典名称是大写的英文字符. 数 ...
 - SQL Server中游标的使用
			
举个栗子: -- 临时变量 DECLARE @Id UNIQUEIDENTIFIER -- 声明游标名 DECLARE cursor_name CURSOR FOR SELECT ID from CO ...