【问题标题】:Creating a table which can auto update if some column in other table got changed如果其他表中的某些列发生更改,则创建一个可以自动更新的表
【发布时间】:2014-01-30 21:32:37
【问题描述】:

我在 postgresql 中创建了两个表,比如 a 和 b。 因此,如果我更改表“a”中的数据,表“b”中的数据会同时自动更新,那么我想要什么。 或者如果表中的数据是 b.salary= 2000+x 其中 x 是可变的,它将被传递给表。
如果任何一个问题得到解决,我可以进一步开展我的工作。 提前致谢

【问题讨论】:

  • 你需要的是一个触发器:net.tutsplus.com/tutorials/databases/…
  • 如果您想在不显示代码的情况下获得帮助,至少要更具体:发布确切的表架构、示例数据、期望的结果。
  • 嘿,感谢你们所有人,很抱歉响应迟到的触发器想法有效,但我意识到使用触发器我必须运行执行相同操作但消耗额外时间的查询,假设存在一列我的表 x,其所有条目都是 0,当数据输入到表 y 中时,X 中的列更新为 10,但是我想要表 x 列中的所有条目都是 K+(表 Y 中单元格的值)的形式,所以如果值表 Y 中的单元格设置为 5,然后表 X 的单元格更新为 K+5,而不使用触发器函数中的任何查询。如果你们想要更多的澄清,我可以举更多的例子。
  • 如果你想要一个表中的新数据,答案仍然是trigger。如果您想要电子表格之类的东西,答案是视图

标签: sql postgresql postgis


【解决方案1】:

例子:

CREATE TABLE test.x (
   value integer
);

CREATE FUNCTION test.value_calc(_arg integer) RETURNS integer AS
$$
DECLARE
   C_MODIFIER CONSTANT integer = 1000;  -- ;)
BEGIN
   RETURN _arg + C_MODIFIER;  -- there you can put any logic
END;
$$
LANGUAGE plpgsql IMMUTABLE;

CREATE VIEW test.y AS SELECT x.value, test.value_calc(x.value) AS modified FROM test.x AS x;

INSERT INTO test.x VALUES (543);

SELECT * FROM test.y;

值|修改的 -----+---------- 543|第1543章

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多