postgres 9.3数据库触发器创建

时间:2013-12-28 23:31:06

标签: postgresql plpgsql

我正在尝试创建一个触发器,在更新一个表时,运行查询并使用结果更新另一个表。

我遇到困难时,会将查询结果分配给正确输入的变量。

当前错误是数组必须以“{”或其他维度信息开头,但是当我调整时我得到其他错误

请参阅下面的当前代码,让我知道最佳方法

我非常感谢您的帮助,因为我花了大量时间咨询谷歌。

CREATE TYPE compfoo AS (ownership character varying (50), count INT);

CREATE OR REPLACE FUNCTION test1_update() RETURNS trigger AS
$$

DECLARE
largest_owner   character varying (50);
temp_result compfoo[];

BEGIN

SELECT ownership, count(*) INTO temp_result
  FROM austpoly2 
  WHERE ownership IS NOT NULL
  group by ownership 
  ORDER BY count DESC
  LIMIT 1;


largest_owner = temp_result[0].ownership;

UPDATE public.states
   SET ownership= largest_owner
 WHERE statecode='1';

RETURN NEW;

  END;

$$
LANGUAGE plpgsql;

CREATE TRIGGER test1_update_trigger
BEFORE UPDATE ON austpoly2
FOR EACH ROW EXECUTE PROCEDURE test1_update();

1 个答案:

答案 0 :(得分:0)

谢谢a_horse with_no_name

您的回复与

相结合
temp_result    compfoo%ROWTYPE;

解决了这个问题