mysql-隐藏字段_rowid
前置
基于mysql5.7.35
描述对象
DB_ROW_ID(row_id)
生命周期
存在主键
- 在设置了主键,并且主键字段是数值类型的情况下,_rowid直接引用了主键字段的值。对于这种可以被select语句查询到的的情况,可以将其称为显式的rowid。
- 在设置了主键,主键字段是非数值类型,那么将无法直接查询_rowid。
无主键,存在唯一索引
- 存在非空唯一索引加在数值类型字段的情况,可以查询_rowid
- 存在非空唯一索引非数值类型字段的情况,不可以查询_rowid
- 只存在允许为空唯一索引字段的情况,不可以查询_rowid
存在联合主键或联合非空唯一索引
- 如果主键存在、且仅由数值类型的一列构成,那么_rowid的值会引用主键。如果主键是由多列构成,那么_rowid将不可用。
流程图:
有些书上说当主键没有显示定义并且不存在非空唯一索引时,才会创建6个字节大小的rowid,个人观点存在误导。
如果有其他观点或者建议的读者可以提供线索留言交流。