-1

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

提前致谢

4

1 回答 1

2

这是一个测试表

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

这是一个示例触发函数。OLD并且NEW是预先声明的变量,表示更新的行。

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 触发过程)
于 2012-05-24T02:23:31.590 回答