我是新的postgres和试图找出最好的是完成我想要的。
我知道OID通常是过去的事情,但它们仍然被postgres内部用于系统表。
我知道至少在某些情况下,OID不能保证在转储和恢复过程中保持不变,但这适用于系统表吗?
更具体地说,问题是我是否可以依赖角色OID永远不变。
我需要在我的用户表和用户登录之间建立一个牢不可破的链接,并在postgres中处理,而不是在客户端中处理。由于角色名称可以更改,我认为用户(角色)名称将是完美的-如果它永远不会更改。
我能指望你吗?
我查看了当前的postgres文档,该页面没有提到OID的持久性(非常旧的版本有-但事情可能已经发生了变化,他们正在考虑像DB行而不是系统表这样的事情)
相关的问题是从大约10年前,而不是直接点的系统表。
1条答案
按热度按时间ercv8c1e1#
在
pg_dumpall
和恢复过程中不会保留角色的对象ID。您不能创建指向目录表的外键,这不是一个好主意。最好的办法可能是创建一个触发器,每当表中的一行被插入或更新时,该触发器都会验证用户的存在。但是您应该使用用户名而不是对象ID作为引用。是的,如果您删除或重命名角色,这将不能保证一致性,但这是您能得到的最好的结果。