基于sqlserver的SQL使用--事务处理

本文介绍了SQLServer中的事务处理机制,包括COMMIT、ROLLBACK、事务、回退、提交和保留点的概念。事务用于确保一组SQL操作的原子性,通过SAVEPOINT设置保留点可以在必要时仅回滚部分事务。ROLLBACK命令用于撤销SQL语句,而COMMIT则将未保存的更改写入数据库。理解这些概念对于数据库管理至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务处理

事务处理:通过确保成批的SQL操作要么完全执行,要么完全不执行,
来维护数据库的完整性。

事务处理是一种机制,用来管理必须成批执行的SQL操作,保证数据库不包含不完整的操作结果。

COMMIT(提交/相当于确定)
ROLLBACK(回滚/相当于撤销)

事务:transaction 指一组SQL语句;

回退:rollback 指撤销指定SQL语句的过程;

提交:commit 指将未存储的SQL语句结果写入数据库表;

保留点:savepoint 指事务处理中设置的临时占位符(placeholder),可以对它发布回退(与回退整个事务处理不同)。

事务处理用来管理INSERTUPDATEDELETE语句。

SELECT语句不需要,CREATE和DROP操作不能回退。

事务处理的关键在于将SQL语句组分解为逻辑块,并明确规定数据何时应该回退,何时不应该回退。
一个简单的事务处理:

begin transaction     --开始事务
delete from check_1   --删除表check_1中的记录
commit transaction;   --提交事务

使用保留点
SAVE/savepoint
要支持回退部分事务,必须在事务处理快中的合适位置放置占位符。回退时,回退到某个占位符。在SQL中,占位符也叫保留点。
创建带有保留点的事务:

使用ROLLBACK
ROLLBACK命令用来回退/撤销SQL语句。

begin transaction     --开始事务
insert into  check_1   --删除表check_1中的记录
(id,name,age,gender)
values(1,'张三',33,'男')

save transaction insert_1; --创建保留点

insert into check_1
(id,name,age,gender)
values(2,'李四',31,'男')
commit transaction;   --提交事务

rollback transaction insert_1;  --将事务回滚到 insert_1的状态

指定条件的回滚:

begin transaction     --开始事务
insert into  check_1   --插入表join_2中的记录
(id,name,age,gender)
values(1,'张三',33,'男')

save transaction insert_1;  --创建一个名为insert_1的保留点

insert into check_1
(id,name,age,gender)
values(2,'李四',31,'男')

save transaction insert_2;  --创建一个名为insert_2的保留点

insert into check_1
(id,name,age,gender)
values(2,'李四',31,'男')

if @@error <> 0 rollback transaction insert_1 
/*
设定回滚到insert_1保留点的条件,当出现错误时执行回滚
条件为布尔值
*/
commit transaction;   --提交事务
/*
最后结果,因为第三次插入数据有ID重复值产生错误,
符合设定的回滚条件,执行回滚。数据表中只插入第一次数据。
*/

保留点越多,你就能进行越加灵活的回退。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值