【问题标题】:PostgreSql propagate changes across databasesPostgreSql 跨数据库传播更改
【发布时间】:2015-03-23 23:28:20
【问题描述】:

我是数据库新手,我正面临一个看似简单的问题。 我有一个旧数据库 db_a 包含一个表 table_a,我想在新数据库 db_b 中使用这个表。 我发现 PostgreSql 中跨数据库的引用完整性不是一个好习惯。因此解决方案是将表 table_a 复制到 db_b 并使用参照完整性。

到目前为止一切顺利!

现在的问题是:我希望始终使用 db_a 中旧表的任何更改来更新 db_b 中的新表。因此,这两个表将始终保持相似。

这样一个经典问题的最佳解决方案是什么?

【问题讨论】:

    标签: database postgresql


    【解决方案1】:

    经典的解决方案是使用multiple schemas(如create schema...)而不是多个数据库。外键引用,包括 on update cascadeon delete cascade 都可以。如果需要,您可以为每个架构 alter default privileges

    【讨论】:

    • 在触发器函数中使用 dblink 或 FDW 将更改的数据发送到新表怎么样?
    • 您几乎可以在触发器中执行任何操作。不过,我不了解您的应用程序,因此在单个数据库中使用标准 SQL 外键约束似乎更有意义。如果这些表要一起使用,它们可能属于同一个数据库。如果这些表是要一起使用的,那就停止这样做。 :-)
    • 我想在两个不同的数据库中拥有同一张表来处理关注点分离问题。那么跨数据库的触发器更好还是一个数据库中的两个模式更好?
    • 一个数据库中的两个模式。 (多个模式可以很好地分离关注点。例如,我在模式“hst”中有 hstore 扩展。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    相关资源
    最近更新 更多