2
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;

ユーザーと履歴は一対一の関係です。新しいユーザーを作成する前に履歴テーブルに新しいレコードを挿入する方法。

4

1 に答える 1

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() ;
于 2012-10-29T12:15:28.377 に答える