postgres触发器根据列值更新另一个表

时间:2012-05-24 00:23:40

标签: postgresql

我对存储过程一无所知。但是当表中的布尔列将值从false更改为true时,迫切需要运行更新sql。如果有人可以提供一个,将不胜感激。

提前致谢

1 个答案:

答案 0 :(得分:1)

这是一个测试表

CREATE TABLE test20120524
(
  id integer NOT NULL,
  bool boolean,
  comment_by_trigger text,
  CONSTRAINT pk_test20120524 PRIMARY KEY (id)
)
WITH (
  OIDS=TRUE
);

这是一个示例触发器功能。 OLDNEW是预先声明的变量,表示更新的行。

create or replace function test1() returns opaque as
'
declare
    -- some variables
begin
    if OLD.bool = false and NEW.bool = true then
        NEW.comment_by_trigger = ''affected by trigger'';
    end if;
    return NEW;
end;
' language 'plpgsql';

然后,创建触发器。

CREATE TRIGGER test2
  BEFORE UPDATE
  ON test20120524
  FOR EACH ROW
  EXECUTE PROCEDURE test1();

存储过程并不那么困难。您可以在PostgreSQL官方文档中轻松学习它:http://www.postgresql.org/docs/9.1/interactive/index.html

  • 36 ..触发
  • 39 .. PL / pgSQL - SQL过程语言(特别是39.9触发程序)