# 事务过程 (D) Prewrite 加锁

![left](./student-guide/diagram/12-process-04-01.png)

-------------------------------------------------------------
TiDB 数据库事务执行过程
- prewrite 操作，首先进行版本检查，在 raft-store 查询这个 key 最新的版本，也就是 commit_ts > start_ts，说明已经有其他事物“提前”提交了最新数据，也就是发生写写冲突，那么事务回滚；
- 如果没有写写冲突，那么就获取当前 key 是否被锁住；
- 如果发现了已经被其他事物锁住，那么再通过是否相同的开始时间，来验证是其他事物的锁定，还是因为重试，自身事物锁住；如果被其他事物锁住，则报异常退出；
