📄 6204.htm
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>MS SQL基础教程:SQL数据库中的事务 - 编程入门网</title>
<meta name="keywords" content="MS SQL基础教程:SQL数据库中的事务">
<meta name="description" content="MS SQL基础教程:SQL数据库中的事务">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="/images/style.css" rel="stylesheet" type="text/css" />
<script src="/js1/head.js"></script>
</head>
<body leftmargin="0" topmargin="0" bgcolor="#efefef" oncopy=nocopy()>
<TABLE width="760" cellPadding="0" cellSpacing="0" bgcolor="#eff7fe" align="center">
<TR>
<TD><a href="/index.htm"><img src="/images/logo1.gif" width="150" height="60" border="0"></a></TD>
<TD width="470" align="right"><script src="/js1/top.js"></script></TD>
<TD width="125" align="center"><script src="/js1/topsy.js"></script></TD>
</TR>
</TABLE>
<table width="760" border="0" cellpadding="1" cellspacing="0" class="bklan" align="center">
<tr>
<td align="center" bgcolor="#eff7fe" height="24"> | <a href='/Programming/index.htm'>编程语言</a> | <a href='/webkf/index.htm'>web开发</a> | <a href='/data/index.htm'>数据库</a> | <a href='/Network/index.htm'>网络技术</a> | <a href='/OS/index.htm'>操作系统</a> | <a href='/Servers/index.htm'>服务器</a> | <a href='/web/index.htm'>网页设计</a> | <a href='/Design/index.htm'>图形设计</a> | <a href='/Office/index.htm'>办公软件</a> | <a href='/soft/index.htm'>常用软件</a> | <a href='/shadu/index.htm'>杀毒频道</a> | <a href='/PC/index.htm'>学电脑</a> |</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" width="760" align="center" bgcolor="#ffffff" border="0">
<tr>
<td align="center"><script src="/js1/content1.js"></script></td>
</tr>
</table>
<table width="760" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td height="25" background="/templets/img/31bg3.gif" align="left" class="guidet"> → 当前位置:<a href='http://www.bianceng.cn/'>首页</a>→<a href='/data/index.htm'>数据库</a>→<a href='/data/SQLServer/index.htm'>SQL Server</a>→<a href='/data/SQLServer/jc/index.htm'>SQL Server教程</a>→正文</td>
</tr>
</table>
<table width="760" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td valign="top" class="guidet" width="595"><table width="100%" border="0" cellpadding="0" cellspacing="0" class="ct">
<tr>
<td align="center" valign="middle" class="til"><h3> MS SQL基础教程:SQL数据库中的事务 </h3>
发布时间:2007-12-25 来源:网络/责编:编程入门 作者:佚名<br />
<script src="/js1/468.js"></script>
</td>
</tr>
<tr>
<td style="font-size:14px" align="left" class="til"><table border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td align="center"><script src="/js1/300.js"></script></td>
</tr>
</table><p> 11.4.1 事务的由来 </p>
<p> 使用DELETE 命令或UPDATE 命令对数据库进行更新时一次只能操作一个表,这会带来数据库的数据不一致的问题。例如:企业取消了后勤部,需要将‘后勤部’从department表中删除,要修改department 表,而employee 表中的部门编号与后勤部相对应的员工也应删除。因此,两个表都需要修,改这种修改只能通过两条DELETE 语句进行。假设后勤部编号为‘1012’</p>
<p> 第一条DELETE 语句修改department 表</p>
<p> delete from department</p>
<p> where dept_id = ’1012’</p>
<p> 第二条DELETE 语句修改employee 表</p>
<p> delete from employee</p>
<p> where dept_id = ’1012’</p>
<p> 在执行第一条DELETE 语句后,数据库中的数据已处于不一致的状态,因为此时已经没有‘后勤部’了,但employee 表中仍然保存着属于后勤部的员工记录。只有执行了第二条DELETE 语句后数据才重新处于一致状态。但是,如果执行完第一条语句后,计算机突然出现故障,无法再继续执行第二条DELETE 语句,则数据库中的数据将处于永远不一致的状态。因此,必须保证这两条DELETE 语句同时执行。为解决类似的问题,数据库系统通常都引入了事务(Transaction) 的概念。</p>
<p> 11.4.2 事务的概念</p>
<p> 事务是一种机制,是一个操作序列,它包含了一组数据库操作命令,所有的命令作为一个整体一起向系统提交或撤消操作请求,即要么都执行,要么都不执行。因此,事务是一个不可分割的工作逻辑单元,类似于操作系统中的原语。在数据库系统上执行并发操作时,事务是作为最小的控制单元来使用的。</p>
<p> 通常在程序中用BEGIN TRANSACTION 命令来标识一个事务的开始,用COMMITTRANSACTION 命令标识事务结束。这两个命令之间的所有语句被视为一体,只有执行到COMMIT TRANSACTION 命令时,事务中对数据库的更新操作才算确认。和BEGIN…END 命令类似,这两个命令也可以进行嵌套,即事务可以嵌套执行。这两个命令的语法如下:</p>
<p> BEGIN TRAN[SACTION] [transaction_name | @tran_name_variable]</p>
<p> COMMIT [ TRAN[SACTION] [transaction_name | @tran_name_variable] ]</p>
<p> 其中BEGIN TRANSACTION 可以缩写为BEGIN TRAN、 COMMIT TRANSACTION可以缩写为COMMIT TRAN 或COMMIT。</p>
transaction_name
<p> 指定事务的名称。只有前32 个字符会被系统识别。 @tran_name_variable</p>
<p> 用变量来指定事务的名称,变量只能声明为CHAR、 VARCHAR、 NCHAR 或 NVARCHAR 类型。 </p>
<img onclick="get_larger(this)" alt="" src="/upimg/071226/11b61505a3064958.gif" />
<p> <img onclick="get_larger(this)" alt="" src="/upimg/071226/11b61506040N561.gif" /></p>
<p> 11.4.3 事务回滚</p>
<p> 事务回滚(Transaction Rollback) 是指当事务中的某一语句执行失败时,将对数据库的操作恢复到事务执行前或某个指定位置。</p>
<p> 事务回滚使用ROLLBACK TRANSACTION 命令,其语法如下:</p>
<p> ROLLBACK [TRAN[SACTION] [transaction_name | @tran_name_variable</p>
<p> | savepoint_name | @savepoint_variable] ]</p>
<p> 其中savepoint_name 和@savepoint_variable 参数用于指定回滚到某一指定位置。</p>
<p> 如果要让事务回滚到指定位置,则需要在事务中设定保存点(Save Point)。所谓保存点是指定其所在位置之前的事务语句,不能回滚的语句即此语句前面的操作被视为有效。---www.bianceng.cn</p>
<p> 其语法如下:</p>
<p> SAVE TRAN[SACTION] {savepoint_name | @savepoint_variable}</p>
<p> 各参数说明如下:</p>
<p> avepoint_name</p>
<p> 指定保存点的名称。同事务的名称一样,只有前32 个字符会被系统识别。 </p>
<p> @savepoint_variable</p>
<p> 用变量来指定保存点的名称。变量只能声明为CHAR、 VARCHAR、 NCHAR 或NVARCHAR 类型。</p>
<p> <img onclick="get_larger(this)" alt="" src="/upimg/071226/11b615060H0T955.gif" /></p>
<p> <img onclick="get_larger(this)" alt="" src="/upimg/071226/11b6150613Fa3Y.gif" /></p>
<p> <strong>注意:</strong>如果不指定回滚的事务名称或保存点,则ROLLBACK TRANSACTION命令会将事务回滚到事务执行前,如果事务是嵌套的、则会回滚到最靠近的BEGIN TRANSACTION命令前。</p>
<p> <a href="/data/SQLServer/jc/200712/6352.htm">查看全套"MS SQL入门基础教程"</a></p><center><br /><script src="/js1/4682.js"></script></center>
<p>上一篇:<a href='/data/SQLServer/jc/200712/6203.htm'>MS SQL基础教程:更新数据</a> 下一篇:<a href='/data/SQLServer/jc/200712/6205.htm'>MS SQL基础教程:数据库中的锁</a> </p></td>
</tr>
<tr>
<td align="left" style="font-size:14px;" height="25"><IMG src="/images/t0.gif" width="12" height="12" align=absMiddle><strong>相关文章</strong><br /><table width='100%' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6203.htm">MS SQL基础教程:更新数据</a><br/>
</td>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6205.htm">MS SQL基础教程:数据库中的锁</a><br/>
</td>
</tr>
<tr>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6202.htm">MS SQL基础教程:删除数据</a><br/>
</td>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6206.htm">MS SQL基础教程:触发器概述</a><br/>
</td>
</tr>
<tr>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6201.htm">MS SQL基础教程:数据库全文检索</a><br/>
</td>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6207.htm">MS SQL基础教程:创建触发器</a><br/>
</td>
</tr>
<tr>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6200.htm">MS SQL基础教程:存储查询结果</a><br/>
</td>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6208.htm">MS SQL基础教程:触发器的原理</a><br/>
</td>
</tr>
<tr>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6199.htm">MS SQL基础教程:合并查询</a><br/>
</td>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6209.htm">MS SQL基础教程:INSTEAD OF触发器</a><br/>
</td>
</tr>
<tr>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6198.htm">MS SQL基础教程:嵌套查询</a><br/>
</td>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6210.htm">MS SQL基础教程:触发器的应用</a><br/>
</td>
</tr>
<tr>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6197.htm">MS SQL基础教程:数据库中的连接查询</a><br/>
</td>
<td width='50%'>
·<a href="/data/SQLServer/jc/200712/6211.htm">MS SQL基础教程:触发器的高级应用</a><br/>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td width="165" valign="top" class="guideb"><script src="/js1/1601.js"></script><table width="100%" border="0" cellpadding="0" cellspacing="0" valign="top">
<tr>
<td height="25" align="center" background="/templets/img/31bg3.gif"><strong>阅读排行</strong></td>
</tr>
<tr>
<td>·<a href="/data/SQLServer/jc/200712/6352.htm">MS SQL Server入门教程</a><br/>
·<a href="/data/SQLServer/jc/200807/10974.htm">MS SQL基础教程:存储过程</a><br/>
·<a href="/data/SQLServer/jc/200705/1189.htm">sql语言教程</a><br/>
·<a href="/data/SQLServer/jc/200807/10973.htm">MS SQL基础教程:创建存储</a><br/>
·<a href="/data/SQLServer/jc/200705/1182.htm">sql字符串函数</a><br/>
·<a href="/data/SQLServer/jc/200712/6301.htm">MS SQL基础教程:SQL Serve</a><br/>
·<a href="/data/SQLServer/jc/200712/6302.htm">MS SQL基础教程:SQL Serve</a><br/>
·<a href="/data/SQLServer/jc/200712/6314.htm">MS SQL基础教程:数据类型</a><br/>
·<a href="/data/SQLServer/jc/200705/1188.htm">Sql语言基础</a><br/>
·<a href="/data/SQLServer/jc/200712/6311.htm">MS SQL基础教程:Transact-</a><br/>
·<a href="/data/SQLServer/jc/200712/6312.htm">MS SQL基础教程:SQL变量</a><br/>
·<a href="/data/SQLServer/jc/200705/1184.htm">sql基本语句</a><br/>
·<a href="/data/SQLServer/jc/200807/10972.htm">MS SQL基础教程:管理存储</a><br/>
·<a href="/data/SQLServer/jc/200712/6306.htm">MS SQL基础教程:数据库基</a><br/>
·<a href="/data/SQLServer/jc/200705/1178.htm">sql数据表</a><br/>
</td>
</tr>
<tr>
<td><script src="/js1/1602.js"></script></td>
</tr>
<tr>
<td height="25" align="center" background="/templets/img/31bg3.gif"><strong>最新文章</strong></td>
</tr>
<tr>
<td><script src="/plus/js/0.js" language="javascript"></script></td>
</tr>
</table></td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" width="760" align="center" bgcolor="#ffffff" border="0">
<tr>
<td align="center"><script src="/js1/content2.js"></script></td>
</tr>
</table>
<table width="760" border="0" cellspacing="0" cellpadding="0" align="center">
<tr height="26">
<td bgcolor="#e1f0fd" width="48"></td>
<td bgcolor="#6ab3f4" width="35"></td>
<td bgcolor="#0a518f" colspan="2" width="4"></td>
<td bgcolor="#c0c0c0" width="530" align="center"><a title="将本站设为你的首页" onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://www.bianceng.cn');return false;" href="http://www.bianceng.cn/">设为首页</a> | <a class="navmenu"
title="将本站加入到你的收藏夹"
href="javascript:window.external.AddFavorite(location.href,document.title)">加入收藏</a> | <a href="/about/about.htm">关于本站</a> | <a href="/plus/flink.php">友情链接</a> | <a href="/about/banquan.htm">版权声明</a> | <a href="/plus/sitemap.html">网站地图</a> | <a href="/plus/rssmap.html">RSS订阅</a></td>
<td bgcolor="#0a518f" colspan="2" width="4"></td>
<td bgcolor="#6ab3f4" width="32"></td>
<td bgcolor="#e1f0fd" width="47"></td>
</tr>
<tr height="26">
<td colspan="9" bgcolor="#FFFFFF" align="center">编程入门网 版权所有,bianceng.cn,All Rights Reserved. <script src="/js/tongji.js"></script> 阅读次数:<script src="/plus/count.php?aid=6204&mid=0" language="javascript"></script></td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -