#事务
#是数据库管理系统(DBMS)中的一个重要概念,它是由一组数据库操作组成的逻辑工作单元,这些操作要么全部执行成功,要么全部失败,即满足ACID特性(原子性、一致性、隔离性和持久性)。
# 事务中的关键字
# BEGIN / START TRANSACTION:用于开始一个新的事务。
# COMMIT:用于提交事务,将所有已执行的操作永久保存到数据库中。
# ROLLBACK:用于回滚事务,撤销自上次COMMIT以来的所有操作,将数据库恢复到事务开始之前的状态。
# SAVEPOINT:在事务中创建一个保存点,可以在后续操作中使用ROLLBACK TO语句将事务回滚到指定的保存点。
# SET autocommit = 0:设置为0可以关闭自动提交,开启事务。设置为1则开启自动提交
# 事务的四大特性
# 原子性:事务是最小操作单元,要么成功,要么全部失败
# 一致性:事务完成时,必须所有数据都保持一致状态
# 隔离性:数据库系统提供隔离机制,保证事务不受外部并发影响环境运行
# 持久性:事务一旦提交或者回滚,它对数据库中数据的改变就是永久的.
# 事务的操作
# 查询事务的提交方式
select @@autocommit;
# 事务提交方式
# (自动提交)
set @@commit =1;
# 默认情况下,MySQL处于自动提交模式。
# 在自动提交模式下,每个SQL语句都被视为一个单独的事务,并在执行完该语句后立即提交。
# 这意味着,除非明确地使用BEGIN或START TRANSACTION语句开启一个事务,否则每个语句的执行都会立即生效,并且无法回滚。
# (手动提交)
# 代码:
-- 创建一个测试表
# CREATE TABLE test_table (
# id INT PRIMARY KEY,
# name VARCHAR(100)
# );
#
# -- 默认情况下,MySQL处于自动提交模式,无需额外设置。
#
# -- 插入一条记录,会自动提交事务
# INSERT INTO test_table (id, name) VALUES (1, 'John');
#
# -- 更新记录,会自动提交事务
# UPDATE test_table SET name = 'Alice' WHERE id = 1;
#
# -- 删除记录,会自动提交事务
# DELETE FROM test_table WHERE id = 1;
# set @@commit =0;
# 默认情况下,MySQL处于自动提交模式。
# 在自动提交模式下,每个SQL语句都被视为一个单独的事务,并在执行完该语句后立即提交。
# 这意味着,除非明确地使用BEGIN或START TRANSACTION语句开启一个事务,否则每个语句的执行都会立即生效,并且无法回滚。
# -- 开启事务
# START TRANSACTION;
#
# -- 插入一条记录,不会自动提交事务
# INSERT INTO test_table (id, name) VALUES (2, 'Bob');
#
# -- 更新记录,不会自动提交事务
# UPDATE test_table SET name = 'Eve' WHERE id = 2;
#
# -- 删除记录,不会自动提交事务
# DELETE FROM test_table WHERE id = 2;
#
# -- 手动提交事务那么表中数据会发生变化
# COMMIT;
#回滚之后事务结束
# ROLLBACK ;