gpt4 book ai didi

postgresql - PostgreSQL 模式的命名空间版本以实现向后兼容性?

转载 作者:行者123 更新时间:2023-12-04 17:04:24 30 4
gpt4 key购买 nike

假设我们有一个带有表的 SQL 数据库 Person以及访问它的几个应用程序。出于某种原因,我们想修改 Person表以向后不兼容的方式。

保持兼容性的一种潜在解决方案是将表重命名为 User并创建一个 Person提供与旧表相同的界面的 View 。 (根据需要添加插入、更新和删除触发器)。

该方法存在的问题是,在进行一些更改后,我们可能会用完可用的语义正确名称。

根据数据库版本“命名空间”模式“接口(interface)”是否有众所周知的最佳实践?

或者,有没有更好的方法来保持向后兼容性?

最佳答案

Is there a well-known best practice for "namespacing" the schema "interface" according to the DB version?



这不是一个常见的要求,但是当我看到对类似事物的需求时,我倾向于创建一个新模式,该模式在单独的模式(命名空间)中包含表的向后兼容包装器。然后我设置了 search_path以每个用户为基础,以便需要向后兼容表的用户看到它,而其他人看到新版本。

BC View 有一个 RULE或(在较新的 PostgreSQL 版本中) DO INSTEAD触发器从其正常模式中显式引用表的当前版本,例如 public.People , 以在需要时支持写入。

这仅在您需要基于每个登录用户的 BC 时才有效,您可以 ALTER USER ... SET search_path ,或者(不太可能)您可以设置需要 BC 的应用程序来运行 SET search_path每个 session 的命令。

关于postgresql - PostgreSQL 模式的命名空间版本以实现向后兼容性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17717426/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com