全部学科
Python全栈
python
NodeJS全栈
nodejs

事务处理专题测试

20 题 40 分钟 难度:★★

考察知识点

  • Begin/Commit/Rollback 基本事务操作
  • 事务中的错误处理
  • 嵌套事务与 Savepoint
  • 事务隔离级别
💡 参考答案在文末
判断题
1

如果某个字段有唯一索引,使用软删除后,删除的记录不能再次使用相同的值插入。

A

B

2

使用 db.Begin() 开始事务后,如果忘记调用 tx.Commit(),事务会自动回滚。

A

B

3

MySQL InnoDB 引擎默认使用 RepeatableRead 隔离级别。

A

B

4

GORM 的 Session 可以用来传递事务状态,多个方法共用同一个 Session 就共用同一个事务连接。

A

B

单选题
5

ReadCommitted 隔离级别可以避免以下哪些问题?

A

脏读

B

不可重复读

C

幻读

D

脏写

6

如何查询包括已删除的所有记录?

A

db.Find(&users)

B

db.Unscoped().Find(&users)

C

db.IncludeDeleted().Find(&users)

D

db.All(&users)

7

GORM 如何实现嵌套事务(保存点)?

A

使用 tx.Begin() 嵌套

B

使用 tx.SavePoint("name") 和 tx.RollbackTo("name")

C

使用 tx.NestedTransaction()

D

GORM 不支持嵌套事务

8

在 GORM 中,如何开始一个事务?

A

db.Begin()

B

db.StartTransaction()

C

db.Transaction(func(tx *gorm.DB) error { ... })

D

以上都是

9

GORM 中实现软删除最简单的方式是什么?

A

手动实现 IsDeleted 字段

B

使用 gorm.DeletedAt 类型

C

使用 BeforeDelete 钩子

D

使用数据库触发器

10

在 GORM 中,如何在多个方法之间传递同一个事务?

A

使用全局变量传递 tx 对象

B

使用 db.WithContext(ctx) 传递上下文

C

使用 Session 传递事务配置

D

GORM 不支持事务传递

11

以下哪个是 SQL 标准定义的事务隔离级别中,最低的隔离级别?

A

ReadUncommitted

B

ReadCommitted

C

RepeatableRead

D

Serializable

多选题
12

以下哪些场景适合使用嵌套事务(保存点)?

A

批量操作中某条记录失败需要回滚

B

需要在事务中尝试多个操作,失败则回退某步

C

所有操作必须全部成功或全部失败

D

需要在事务中间点设置恢复点

13

以下哪些是在 GORM 中传递事务的推荐方式?

A

将 tx 作为参数传递给 Service 方法

B

使用 context.Context 存储事务

C

使用 db.Session(&Session{NewDB: true})

D

使用全局变量存储事务

14

使用 gorm.DeletedAt 实现软删除后,以下哪些操作会受到影响?

A

普通查询自动过滤已删除记录

B

Delete 操作变为更新 DeletedAt

C

唯一索引需要考虑 DeletedAt

D

Count 统计不包含已删除记录

15

以下关于 GORM 事务使用的描述,哪些是正确的?

A

db.Transaction 方法会自动处理 Commit 和 Rollback

B

手动事务需要调用 tx.Commit() 或 tx.Rollback()

C

事务中的错误应该返回 error,由 Transaction 方法处理

D

事务只能包含单个数据库操作

16

以下哪些场景需要使用 Unscoped() 方法?

A

查询已删除的记录用于审计

B

执行硬删除操作

C

恢复已删除的记录

D

统计包括已删除的总记录数

填空题
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
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 GORM 高级技能认证测试
下一套试卷 → 关联关系管理专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码