commit数据库
1. sql 语句中commit的作用
begin
tran标记事务开始
commit
tran
提兄扮胡交事务
一般把dml语句(select
,delete,update,insert语句)放在begin
tran...commit
tran
之间作为一个事务处理
也就是那些语句执行过程中如果遇到错误,无论哪句遇到错误,所有羡拦语句都会缺掘回滚到begin
tran之前的状态。
2. sql commit用法
COMMIT命令用于把事务所做的修改保存到数据库,把上一个COMMIT或ROLLBACK命令之后的全部事务都保存到数据库。全部修改都首先被送到临时回退区域,如果这个临时回退区域没有空间了,不能保存对数据库所做的修改,数据库很可能会挂起,禁止进行进一步的事务操作。
语法是:commit [work]。关键字commit是语法中惟一不可缺少的部分,其后是用于终止语句的字符或命令,具体内容取决于不同的实现。关键字work是个选项,其惟一作用是让命令对用户更加友好。
(2)commit数据库扩展阅读:
对于数据库的大规模数据加载或撤消来说,应该多使用COMMIT语句;然而,过多的COMMIT语句会让工作需要大量额外时间才能完成。
在某些实现里,事务不是通过使用COMMIT命令提交的,而是由退出数据库的操作引发提交。但是,在某些实现里,比如MySQL,在执行SETTRANSACTION命令之后,在数据库收到COMMIT或ROLLBACK之前,自动提交功能是不会恢复的。
3. 若数据库操作commit发生异常,没有执行回滚,这时数据会存入数据库吗
弄清楚这个问题之前,要先要搞清楚执行数据修改(excute),但未提交事务之前,已修改的数据存放在哪里?这时的数据是在数据库内存缓冲区中。commit操作就是将缓冲区中已修改数据写入磁盘,形成持久化存储。
那么当commit提交的修改的数据是多条时,假设部分数据已经由缓冲区写入磁盘,另一部分还未完成时,出现异常,这个时候,如果不回滚,那么就无法保证数据修改的一致性(比如联机转账,A的账户扣了款,B的账户余额未增加)。
简单来说就是:若数据库操作commit发生异常,没有执行回滚,这时可能出现部分数据保存成功,部分保存失败,因此需要rollback回滚操作。