PostgreSQL 确实有这个概念.
见这里的伪列的简短列表在PostgreSQL外面,ctid是您感兴趣的:
ctid (tuple identifier)描述元组在数据库中的物理位置的标识符.一对数字由ctid表示:块号和该块内的元组索引.
这是直接模拟Oracle的rowid.
至于MySQL前端的物理位置不可用于前端.
In MyISAM,rowid只是一个从开头偏移的文件,这是存储在索引中的内容.
在InnoDB表中,表是index organized设计的,这意味着它们总是具有某种主键,而InnoDB表上的索引将其PRIMARY KEY用作行指针.
这也是真正Oracle的index organized表,针对其rowid不是物理指针在数据文件的块,而是一个这样叫logical ROWID,或UROWID
如果ROWID从INDEX ORGANIZED表中选择一个Oracle,您将看到它具有不同的格式(类似*BAEBwPICwQL+).这实际上是一个编码PRIMARY KEY值.
请注意,如果您尚未将任何列定义为a PRIMARY KEY,MySQL则会创建一个隐藏的代理项PRIMARY KEY,您将永远无法控制该列.
这就是为什么你应该总是PRIMARY KEY在InnoDB表中创建某种类型的东西:它是免费的,你可以控制列.