gpt4 book ai didi

sql - 数据库中同步的两个或多个表

转载 作者:搜寻专家 更新时间:2023-10-30 20:19:30 24 4
gpt4 key购买 nike

我正在使用 PostgreSQL,我需要在我的数据库中有两个或多个表,这些表大部分是同步的,这样子表中的一行的 Add/Delete/Update主表。

我不确定在这种情况下是否可以使用触发器,因为在我的情况下,子表可能会被截断并加载新的数据集

知道如何实现吗?

示例:

Employee_Sub1:
id name version
+------+-------+--------+
101 John 1
102 David 1
105 Azi 1

Employee_Sub2:
id name version
+------+-------+--------+
101 John 1
102 DavidX 2 <- Sub2 having updated value for id 102
105 Azi 1
107 Marry 1

Employee_Sub3:
id name version
+------+-------+--------+
101 John 1
105 Azi 1
110 devil 1 <- Sub3 having new row of data

Employee_Final 表应如下所示:

Employee_Final:
id name version
+------+-------+--------+
101 John 1
102 DavidX 2
105 Azi 1
107 Marry 1
110 devil 1

最佳答案

我认为您正在寻找 triggers ;见PL/PgSQL trigger procedures了解如何在 PL/PgSQL 中实现它们。在每个 Employee_Sub1Employee_Sub2Employee_Sub3 上使用 AFTER INSERT OR UPDATE OR DELETE 触发器将它们的更改传播到Employee_Final

还有一点 table inheritance感觉这个问题,但我不确定继承是否合适。

通常,当您更改 ID 时,您会使用 ON UPDATE CASCADE 外键引用,但这在这里不起作用,因为您需要将其反转,即当您更改 FK 时,PK 会更新。这是触发器的另一项工作;您必须比较 NEWOLD 记录 ID,如果 ID 已更改,则更新主表。

关于sql - 数据库中同步的两个或多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13304063/

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