Postgresql:使用触发器插入记录

时间:2012-10-29 10:52:39

标签: postgresql plpgsql

CREATE TABLE users
(
 id integer NOT NULL DEFAULT nextval('userseq'::regclass)
 ........
)

CREATE TABLE History
(
 userid integer,
 createdat timestamp with time zone
)

CREATE OR REPLACE FUNCTION recordcreatetime()
      RETURNS trigger AS
        $BODY$
        BEGIN
                NEW.createdAt = NOW();
                RETURN NEW;
        END;
        $BODY$
          LANGUAGE plpgsql VOLATILE
          COST 100;

用户和历史有一对一的关系。如何在创建新用户之前在历史记录表中插入新记录。

1 个答案:

答案 0 :(得分:3)

CREATE OR REPLACE FUNCTION recordcreatetime()
  RETURNS trigger 
language plpgsql
AS $$
DECLARE
BEGIN
INSERT INTO History values(new.id,NOW() );
 RETURN NEW;
END;
$$;

并将触发器语句写为

CREATE TRIGGER user_hist
BEFORE INSERT ON users
FOR EACH ROW EXECUTE function  recordcreatetime() ;