消息 3902,级别 16,状态 1,第 3 行 COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
2013-07-16 18:07
375 查看
在SQL SERVER里写简单的插入语句,并提交:
insert into emp(empno,ename) values(2,'dan');
commit;
结果报错:
消息 3902,级别 16,状态 1,第 3 行 COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
出错原因:如果是在ORACLE里这样写是没错的,但是这个SQL SERVER环境。语法需要改变。
解决办法:
应该这样写:
begin transaction;
insert into emp(empno,ename) values(2,'dan');
commit transaction;
同时,我发现,在SQL SERVER里没提交的话,再打开一个会话,仍能看到改变后的数据。但是在ORACLE里,这绝对是看不到的,除非提交了数据。SQL SERVER里做DML操作,会自动提交。所以,有时就会用到事务。
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
insert into emp(empno,ename) values(2,'dan');
commit;
结果报错:
消息 3902,级别 16,状态 1,第 3 行 COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
出错原因:如果是在ORACLE里这样写是没错的,但是这个SQL SERVER环境。语法需要改变。
解决办法:
应该这样写:
begin transaction;
insert into emp(empno,ename) values(2,'dan');
commit transaction;
同时,我发现,在SQL SERVER里没提交的话,再打开一个会话,仍能看到改变后的数据。但是在ORACLE里,这绝对是看不到的,除非提交了数据。SQL SERVER里做DML操作,会自动提交。所以,有时就会用到事务。
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
相关文章推荐
- 消息 8101,级别 16,状态 1,第 3 行
- 消息 1776,级别 16,状态 0,第 1 行 在被引用表 '产品类别' 中没有与外键 'FK_leibie1' 中的引用列列表匹配的主键或候选键。 消息 1750,级别 16,状态 0,第 1 行
- 消息 14607,级别 16,状态 1,过程 sp_send_dbmail,第 141 行 profile 名称无效
- 服务器:消息18456,级别16,状态1 用户‘sa’登录失败解决方法
- 服务器: 消息 15135,级别 16,状态 1,过程 sp_validatepropertyinputs,行 100. 对象无效。不允许在 '.cash_flux' 上使用扩展属性,或对象不存在
- 服务器: 消息 508,级别 16,状态 1,无法调试存储过程
- 服务器:消息18456,级别16,状态1 用户‘sa’登录失败解决方法
- 在往sql server 插入数据时 报此错误“ 消息 8152,级别 16,状态 14,第 1 行 将截断字符串或二进制数据。”
- 消息 245,级别 16,状态 1,
- MSSQL删除字段时出现 服务器: 消息 5074,级别 16,状态 1,行 1 的解决办法
- 消息 8101,级别 16,状态 1,第 1 行仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'CUSTOMER_TBL'中的标识列指定显式值。
- “服务器: 消息 8152,级别 16,状态 9 ”的处理
- 消息 266,级别 16,状态 2,过程 UserExchange,第 0 行 EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 0,当前计数 = 1。
- 消息 8134,级别 16,状态 1,第 1 行 遇到以零作除数错误
- 消息 245,(246)级别 16,状态 1,将varchar类型转黄成int型时失败
- 消息 15135,级别 16,状态 8,过程 sp_addextendedproperty,第 37 行 对象无效。'dbo.Message.messageId' 不允许有扩展属性,或对象不存在。 消息 15135,级别 16,状态 8,过程 sp_addextendedproperty,第 37 行 对象无效。'dbo.Message.messageName' 不允许有扩展属性,或对象不存在。
- 消息 245,级别 16,状态 1,— —动态SQL
- sqlserver 2008消息 15281,级别 16,状态 1
- 类似“消息 1767,级别 16,状态 0,第 1 行 外键 'fk_cwi' 引用了无效的表 'CourseWare'。”的解决
- 无法打开物理文件 。操作系统错误 5:"5(拒绝访问。)"。 消息 5120,级别 16,状态 101