2012-10-29 91 views
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; 

用户和历史记录具有一对一的关系。如何在创建新用户之前在历史表中插入新记录。Postgresql:使用触发器插入记录

回答

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() ;