哦,你好!
我有两个表,第一个(让我们称之为NameTable)预设有一组值(id,name),第二个(ListTable)是空的但具有相同的列。
问题是:如何在ListTable中插入一个来自NameTable的值?因此,如果我在NameTable中更改一个名称,那么自动更新ListTable中的值也是如此。
是否存在INSERT或是否必须以某种特殊方式创建表格?
尝试浏览手册但没有成功:(
答案 0 :(得分:1)
使用INSERT ... SELECT的建议是在同一数据库中的表之间移动的最佳方法。
但是,还有另一种方法可以处理自动更新要求。
听起来这些是您的标准:
这是FOREIGN KEY的作业,选项为ON UPDATE CASCADE:
ALTER TABLE B ADD FOREIGN KEY (x,y) REFERENCES A (x,y) ON UPDATE CASCADE;
现在,当表A更新时,它不仅会自动更新表B,还会保护表B不包含表A中不存在的(x,y)对。如果您希望从表中自动删除记录B从表A中删除时,添加“ON UPDATE DELETE”。
答案 1 :(得分:0)
嗯......我对你想要做什么或为什么感到有点困惑,但是这里有一些关于你可能想要看一下的事情的指针:表继承,触发器和规则。
postgresql中的表继承允许表共享另一个表的数据。因此,如果向基表中添加一行,它将不会显示在继承的表中,但如果向继承的表中添加一行,它现在将显示在两个表中,并且任何一个地方的更新都将反映它在两个表中。
触发器允许您设置在表上发生插入,更新或删除操作时将运行的代码。这将允许您添加手动描述的行为。
规则允许您设置一个规则,当满足特定条件时,该规则将使用备用查询替换匹配查询。
如果你进一步描述你的问题,为什么你想要这种行为,可能更容易建议正确的方法: - )