gorm 模拟试卷
事务处理专题测试
- Begin/Commit/Rollback 基本事务操作
- 事务中的错误处理
- 嵌套事务与 Savepoint
- 事务隔离级别
试卷习题(20 题)
参考答案在文末判断题
1
判断题
如果某个字段有唯一索引,使用软删除后,删除的记录不能再次使用相同的值插入。
2
判断题
使用 db.Begin() 开始事务后,如果忘记调用 tx.Commit(),事务会自动回滚。
3
判断题
MySQL InnoDB 引擎默认使用 RepeatableRead 隔离级别。
4
判断题
GORM 的 Session 可以用来传递事务状态,多个方法共用同一个 Session 就共用同一个事务连接。
单选题
5
单选题
ReadCommitted 隔离级别可以避免以下哪些问题?
6
单选题
如何查询包括已删除的所有记录?
7
单选题
GORM 如何实现嵌套事务(保存点)?
8
单选题
在 GORM 中,如何开始一个事务?
9
单选题
GORM 中实现软删除最简单的方式是什么?
10
单选题
在 GORM 中,如何在多个方法之间传递同一个事务?
11
单选题
以下哪个是 SQL 标准定义的事务隔离级别中,最低的隔离级别?
多选题
12
多选题
以下哪些场景适合使用嵌套事务(保存点)?
13
多选题
以下哪些是在 GORM 中传递事务的推荐方式?
14
多选题
使用 gorm.DeletedAt 实现软删除后,以下哪些操作会受到影响?
15
多选题
以下关于 GORM 事务使用的描述,哪些是正确的?
16
多选题
以下哪些场景需要使用 Unscoped() 方法?
填空题
17
填空题
在 GORM 中设置事务隔离级别可以使用 db.Session(&gorm.Session{: true}).() 后执行原生 SQL 设置,或使用数据库特定的配置方法。
18
填空题
使用 tx.SavePoint("") 创建保存点后,可以使用 tx.RollbackTo("") 回滚到该点,而不影响保存点之前的操作。
19
填空题
使用 db.Transaction 时,如果函数返回则自动提交事务,如果返回则自动回滚事务。
20
填空题
GORM 对包含 DeletedAt 字段的模型,普通查询会自动添加条件,使用方法可以取消该过滤。
参考答案
1.错误
2.错误
3.正确
4.正确
5.A
6.B
7.B
8.D
9.B
10.B
11.A
12.A;B;D
13.A;B
14.A;B;C;D
15.A;B;C
16.A;B;C;D
17.PrepareStmt;Begin
18.sp1;sp1
19.nil;error
20.WHERE deleted_at IS NULL;Unscoped
