PostgreSQL:动态行值

PostgreSQL:动态行值,postgresql,dynamic,insert,row,Postgresql,Dynamic,Insert,Row,哦,你好! 我有两个表,第一个我们称之为NameTable,它预设了一组值id,name,第二个ListTable为空,但列相同。 问题是:如何在ListTable中插入来自NameTable的值?因此,如果我在NameTable中更改了一个名称,那么ListTable中的值也会自动更新。 是否对此进行了插入,或者必须以某种特殊方式创建表? 尝试浏览手册,但未成功:Hmmm。。。我对您到底想做什么或为什么要做有点困惑,但这里有一些指向您可能想看一看的事情的指针:表继承、触发器和规则 postgr

哦,你好! 我有两个表,第一个我们称之为NameTable,它预设了一组值id,name,第二个ListTable为空,但列相同。 问题是:如何在ListTable中插入来自NameTable的值?因此,如果我在NameTable中更改了一个名称,那么ListTable中的值也会自动更新。 是否对此进行了插入,或者必须以某种特殊方式创建表?
尝试浏览手册,但未成功:

Hmmm。。。我对您到底想做什么或为什么要做有点困惑,但这里有一些指向您可能想看一看的事情的指针:表继承、触发器和规则

postgresql中的表继承允许一个表共享另一个表的数据。因此,如果将行添加到基表中,它将不会显示在继承表中,但是如果将行添加到继承表中,它现在将显示在两个表中,并且任何位置的更新都将在两个表中反映它

触发器允许您设置在表上执行插入、更新或删除操作时将运行的代码。这将允许您添加手动描述的行为

规则允许您设置一个规则,当满足特定条件时,该规则将用替代查询替换匹配查询


如果您将问题进一步描述为为什么需要这种行为,那么建议正确的处理方法可能会更容易:-

使用INSERT…SELECT的建议是在同一数据库中的表之间移动的最佳方法

但是,还有另一种方法来处理自动更新需求

这听起来像是你的标准:

表A由x、y列定义 x、 y是独一无二的 表B还定义了x、y列 表A是表B的超集 表B将加载表A中的数据,并且需要与表A上的更新保持同步。 这是一个外键作业,具有更新级联选项:

ALTER TABLE B ADD FOREIGN KEY (x,y) REFERENCES A (x,y) ON UPDATE CASCADE;

现在,它不仅会在更新表A时自动更新表B,还可以防止表B中包含表A中不存在的x、y对。如果要在从表A中删除记录时自动从表B中删除,请添加更新删除

抱歉,我的英语和SQL技能不好解释:p但基本上在伪SQL中是这样的:在table1名称值中插入从table2中选择的名称,其中id=1,然后当您更改table2中的名称时,table1中的名称也会更改。我认为继承可能是解决这个问题的方法?是的,它看起来绝对是最优雅的解决方案。您打算修改从属表吗。你确定你不仅仅需要一个视图吗?