我有一个应用程序完全依赖PostgreSQL OID 进行操作。它目前在 PostgreSQL 9.6.1,但我希望升级到 13。是否有推荐/标准机制(使用触发器?)在较新版本中重新创建 OID 功能?
作为背景,应用程序使用 OID 的原因是因为应用程序对数据库架构一无所知,并且旨在用于任何随机数据库架构,使用逆向工程进行导航。出于这个原因,“只添加一个主键”的建议对我不起作用。目前,该应用程序针对 6 个独立的数据库运行,每个数据库都有自己的架构。
附加背景
实际上,每个应用程序都了解其数据库模式,例如工资单应用程序了解员工表,该表的主键可能为emp_id
.
我的应用程序不同。
我的应用程序会自动为它指向的任何随机 PostgreSQL 数据库生成一个 CRUD 应用程序。因此,它不对主键、表名、列名等做任何假设。它所做的唯一假设是它所指向的数据库对于每个表中的每一行都有一个唯一的 OID。就目前的情况而言,我将这个应用程序用于五个独立且不同的数据库,并且自 2007 年左右以来一直这样做。
所以我明白了,在没有系统生成的 OID 的情况下,我可能需要创建一个名为 OID 的用户列,定义为一个序列。该问题的目的是询问是否有适用于使用 pre-v12 OID 的应用程序的规范解决方案。假设应用程序无法更改,因此任何解决方案都必须完全在数据库中实现。