【发布时间】:2015-12-21 10:09:25
【问题描述】:
我正在使用 postgresql。我有两个架构 main 和 sec 只包含一个表 datastore 具有相同的结构(这只是一个摘录)
当其中一个表发生插入时,我试图创建一个触发器以保持两个表同步,但未成功。问题在于某种循环或递归引用。
你能创建一些例子来解决这个问题吗?
我正在解决这个问题,稍后我会发布我的解决方案。 您可以将此代码用作创建模式和表的参考
CREATE SCHEMA main;
CREATE SCHEMA sec;
SET search_path = main, pg_catalog;
CREATE TABLE datastore (
fullname character varying,
age integer
);
SET search_path = sec, pg_catalog;
CREATE TABLE datastore (
fullname character varying,
age integer
);
【问题讨论】:
-
嗯...为什么?为什么不简单地从两个来源插入到同一个表中?还是让一张桌子成为另一张桌子的视图?
-
否...外部系统通过选择其中一个表来插入数据。我的兴趣是在插入后复制数据。我无法修改当前行为。是的......它显然很烂
-
这毫无意义。系统插入两个表之一,您希望它们相同吗?为什么它插入单独的?分离的最初原因是什么(可能不再需要)?我强烈建议将其中一张表替换为可更新的视图。
-
当前系统随机选择两个表之一。但是需要查询表,所以我需要它们具有相同的值。我没有开发遗留系统,我暂时无法更改。
-
添加触发器也会修改表定义。触发器需要与创建可更新视图相同的权限。您可以而且应该使用简单的可更新视图。它将有效地使两个表成为一个具有第二个名称的表。无需触发器。
标签: postgresql triggers insert synchronization postgresql-9.3