.net网站开发软件,重庆市建设工程质量监督信息网,软文广告属于什么营销,做论坛网站 备案1.事务
数据库事务是一组数据库操作#xff0c;它们被视为一个单一的逻辑工作单元#xff0c;要么全部成功执行#xff0c;要么全部回滚#xff08;撤销#xff09;到事务开始前的状态。事务是确保数据库数据一致性、完整性和可靠性的关键机制之一。
简单来说#xff0…1.事务
数据库事务是一组数据库操作它们被视为一个单一的逻辑工作单元要么全部成功执行要么全部回滚撤销到事务开始前的状态。事务是确保数据库数据一致性、完整性和可靠性的关键机制之一。
简单来说事务就是把好几个sql语句集合在一起。假如有一个事务事务里有sql语句abc当我们执行完语句a后真正的数据库不会发生改变但在mysql命令行里你可以看到一个临时的表格显示如果这条语句真的生效后会发生什么。此时如果你选择rollback回滚就会撤销这条临时的sql指令a。
此时如果你继续执行bc语句点击提交这时真正的数据库才发生了改变。只执行了bc的内容a的被回滚了
事务具有以下四个关键属性通常称为 ACID 特性 原子性Atomicity 事务是原子的即要么全部执行成功要么全部回滚没有中间状态。如果在事务执行期间发生错误所有对数据库的更改将被撤销。 一致性Consistency 事务将数据库从一种一致状态转移到另一种一致状态。在事务开始前和结束后数据库必须保持一致性。 隔离性Isolation 多个事务可以并发执行但每个事务看起来就像是在独立执行一样不会相互影响。隔离性确保并发事务的执行不会导致不一致的数据库状态。 持久性Durability 一旦事务成功提交其对数据库的更改应该是永久性的即使在系统故障或重启后仍然有效。持久性确保事务的提交是可靠的。
数据库事务通常使用以下关键命令来定义
BEGIN TRANSACTION或简写为 BEGIN 标志事务的开始。COMMIT 提交事务将事务的所有更改保存到数据库。ROLLBACK 回滚事务撤销所有未提交的更改将数据库恢复到事务开始前的状态。
在数据库中事务的应用可以确保在复杂的数据操作中维护数据的一致性并防止数据损坏。例如银行转账是一个事务如果其中一个账户的扣款成功而另一个账户的存款失败整个事务将被回滚以确保数据一致性。
2.JDBC和事务
JDBC默认的事务处理行为是自动提交所以前面我们执行一个SQL语句就会被直接提交相当于没有启动事务所以JDBC需要进行事务管理时首先要通过Connection对象调用setAutoCommit(false) 方法,关闭自动提交。
connection.setSavepoint();可以设置回滚点。connection.rollback(savepoint);可以进行回滚
connection.commit();提交
package jdbc;import java.sql.*;public class Transaction {public static void main(String args[]){try(Connection connection DriverManager.getConnection(jdbc:mysql://localhost:3306,root,020809);Statement statementconnection.createStatement()){connection.setAutoCommit(false);statement.executeUpdate(INSERT INTO accounting_ledger.user VALUES (lyx, 12345););//设置回滚点Savepoint savepointconnection.setSavepoint();statement.executeUpdate(INSERT INTO accounting_ledger.user VALUES (lyx1, 12345););statement.executeUpdate(INSERT INTO accounting_ledger.user VALUES (lyx2, 12345););//将会回滚到第一条sql语句执行后connection.rollback(savepoint);//提交事务只会执行第一条sql语句connection.commit();}catch (SQLException e){e.printStackTrace();}}
}