编写事务实例,分别使其成功提交和回滚,观察该事务对数据库的影响。
时间: 2024-01-22 15:20:44 浏览: 14
假设我们有一个测试数据库testdb,其中有一张表test_table,表结构为:
```
CREATE TABLE test_table (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL
);
```
下面是一个成功提交的事务实例:
```
START TRANSACTION;
INSERT INTO test_table (name, age) VALUES ('Alice', 25);
INSERT INTO test_table (name, age) VALUES ('Bob', 30);
COMMIT;
```
以上实例会向test_table表中插入两条数据,分别是姓名为Alice,年龄为25,姓名为Bob,年龄为30。
下面是一个回滚的事务实例:
```
START TRANSACTION;
INSERT INTO test_table (name, age) VALUES ('Charlie', 35);
INSERT INTO test_table (name, age) VALUES ('David', 40);
ROLLBACK;
```
以上实例会向test_table表中插入两条数据,分别是姓名为Charlie,年龄为35,姓名为David,年龄为40。但是由于事务被回滚,所以这两条数据最终不会被保存到数据库中。
可以通过执行以下语句来查看test_table表中的数据:
```
SELECT * FROM test_table;
```
如果以上两个事务都被执行了,查询结果可能如下:
```
+----+---------+-----+
| id | name | age |
+----+---------+-----+
| 1 | Alice | 25 |
| 2 | Bob | 30 |
+----+---------+-----+
```
如果只执行了第二个事务,查询结果可能如下:
```
+----+-------+-----+
| id | name | age |
+----+-------+-----+
+----+-------+-----+
```