sql回滚

rollback是针对事务的,你如果没有在执行语句之前开启事务,那么无法rollback,建议你还是想别的办法吧,事务语句如下(sqlserver的给你借鉴):
--开启事务
begin tran
--执行操作
update Accounts_UsersExp set TelPhone=123456 where userid=14
--执行错误事务回滚
rollback
--如果正确进行事务提交
commit
可以勾选一句执行一句,但是commit了就不能rollback

转载于:https://www.cnblogs.com/liqing1009/p/4463674.html

### SQL Rollback 的使用方法及常见问题 #### 1. **SQL Rollback 基本概念** 在数据库管理中,`ROLLBACK` 是一种事务控制语句,用于撤销自上次 `COMMIT` 或 `ROLLBACK` 执行以来的所有更改。通过这种方式可以恢复到事务开始之前的数据库状态,从而确保数据的一致性和完整性[^4]。 #### 2. **基本语法** 以下是 `ROLLBACK` 的标准语法: ```sql ROLLBACK; ``` 当执行此命令时,当前事务中的所有未提交的操作都会被取消并回退至最近的保存点或事务起点。 #### 3. **结合事务使用的示例** 下面展示了一个完整的事务处理流程,其中包括 `ROLLBACK` 和 `COMMIT` 的使用: ```sql -- 开始事务 START TRANSACTION; -- 插入一条记录 INSERT INTO employees (name, position) VALUES ('John Doe', 'Developer'); -- 更新另一条记录 UPDATE employees SET position = 'Manager' WHERE name = 'Jane Smith'; -- 如果发现错误,则回滚整个事务 ROLLBACK; -- 若无误则提交事务 COMMIT; ``` 在此例子中,如果检测到任何异常情况(例如违反约束条件),可以通过发出 `ROLLBACK` 来撤消所有的修改操作[^3]。 #### 4. **设置自动完成模式的影响** 某些情况下,可能需要调整 MySQL 的会话变量来改变默认行为。例如,默认状态下每次 DML 操作后可能会隐式提交事务;而通过设定 `@@completion_type=1` 可以让每笔交易完成后保留其活动状态以便后续进一步处理而不立即结束事务链路关系[^3]。 #### 5. **解决常见的 SQL 回滚问题** - **忘记显式声明 START TRANSACTION**: 当没有明确指定启动新事务时,单独调用 ROLLBACK 不会产生预期效果因为系统认为不存在待决事项可逆向清理。 - **跨不同连接共享同一逻辑单元失败风险评估不足:** 即使两个独立客户端都参与相同业务场景下的更新动作但由于它们各自拥有分开维护的状态所以单方面尝试rollback无法影响其他方已完成部分除非特别设计同步机制支持全局协调能力[^2]. - **资源锁定超时引发死锁情形下强制中断后的残留状况修复建议措施探讨分析报告编写指南说明文档参考资料链接地址列表如下所示:** 这种复杂环境下除了依赖于应用程序层面预防策略外还需要合理配置数据库参数比如innodb_lock_wait_timeout值大小以及定期监控预警指标变化趋势图谱绘制工具推荐选用Elasticsearch+Kibana组合方案实现可视化呈现功能提升运维效率减少人为判断失误概率提高整体服务质量水平达到最佳实践目标要求标准规范手册版本号V1.0日期2023年9月发布单位名称阿里巴巴集团技术团队负责人签名确认生效日期即日起长期有效直至另行通知为止特此公告周知全体员工共同遵守执行谢谢合作! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值