什么是事务:

    1. 对于用户而言,事务是具有完整逻辑意义的数据库操作序列的集合
    2. 对于DBMS而言,事务则是一个读写操作序列。这些操作是一个不可分割的逻辑工作单元,要么都做,要么都不做
    3. 事务是DBMS中竞争资源、并发控制和恢复的基本单元。它是由数据库操作语言(如SQL)或高级编程语言(如Java、C、C++)提供的事务开始语句、事务结束语句以及由它们包含的全部数据库操作语句组成。

    事务结束的两种类型:

    • 事务提交(commit):将成功完成的事务的执行结果(即更新)永久化,并释放事务占有的全部资源。是事务的正常结束。
    • 事务回滚(rollback):中止当前事务,撤销其对数据库所做的更新,并释放事务占有的全部资源。是事务的非正常结束。

    MySQL默认采用自动提交事务模式(AutoCommit=1),即每一条INSERT、UPDATE、DELETE的SQL语句执行后,会自动执行COMMIT操作。如果想要显式地手动对事务进行操作,则需要set AutoCommit=0,或者在start transaction语句和commit(rollback)语句之间,编写SQL语句对事务进行操作。

    事务的ACID原则:

    四大原则 详细解释 DBMS保证事务原则的措施
    原子性(Atomicity) 原子性是指:事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生;要么都成功,要么都失败,不能只发生其中一个动作。 由DBMS通过撤销(UNDO)未完成的事务对数据库的影响来实现。
    一致性(Consistency) 事务前后数据的完整性必须保持一致,符合逻辑运算。 由编写该事务代码的应用程序员负责,但有时也可利用DBMS提供的数据库完整性约束(如触发器)的自动检查功能来保证。
    隔离性(Isolation) 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。 由DBMS的并发控制模块保证。
    持久性(Durability) 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响事务一旦提交则不可逆,会被持久化到数据库中存储。 由DBMS的恢复管理模块保证。