Обсуждение: Error in trigger
Hi,
All my tables in the database have "CreateDate" and "LastUpdateDate" columns. I need to create a trigger wherein on insert the "CreateDate" column is inserted with the current date. On Update the "LastUpdateDate" is inserted with the current date.
I tried the insert trigger as mentioned below:
CREATE FUNCTION "CreateDate_F"() RETURNS TRIGGER AS $CreateDate_T$
BEGIN
insert into "CreateDate" values (CURRENT_TIMESTAMP);
END;
$CreateDate_T$ LANGUAGE plpgsql;
BEGIN
insert into "CreateDate" values (CURRENT_TIMESTAMP);
END;
$CreateDate_T$ LANGUAGE plpgsql;
CREATE TRIGGER "Create_Date_T" AFTER INSERT ON "CreateDate"
FOR EACH STATEMENT EXECUTE PROCEDURE "CreateDate_F"();
FOR EACH STATEMENT EXECUTE PROCEDURE "CreateDate_F"();
However, when I run the insert on the said table, I get the following error:
ERROR: stack depth limit exceeded
HINT: Increase the configuration parameter "max_stack_depth".
CONTEXT: SQL statement "insert into "CreateDate" values (CURRENT_TIMESTAMP)"
PL/pgSQL function "CreateDate_F" line 2 at SQL statement
HINT: Increase the configuration parameter "max_stack_depth".
CONTEXT: SQL statement "insert into "CreateDate" values (CURRENT_TIMESTAMP)"
PL/pgSQL function "CreateDate_F" line 2 at SQL statement
Other than the above, is there any other way of doing this.???
Any suggestions please .???
Regards
On Thu, 18 Jan 2007, Negandhi, Nishith wrote: > Hi, > All my tables in the database have "CreateDate" and "LastUpdateDate" > columns. I need to create a trigger wherein on insert the "CreateDate" > column is inserted with the current date. On Update the "LastUpdateDate" > is inserted with the current date. > > I tried the insert trigger as mentioned below: > > CREATE FUNCTION "CreateDate_F"() RETURNS TRIGGER AS $CreateDate_T$ > BEGIN > insert into "CreateDate" values (CURRENT_TIMESTAMP); > END; > $CreateDate_T$ LANGUAGE plpgsql; > > CREATE TRIGGER "Create_Date_T" AFTER INSERT ON "CreateDate" > FOR EACH STATEMENT EXECUTE PROCEDURE "CreateDate_F"(); I think you really want to be using a before row trigger and setting NEW."CreateDate" in it if you want each row to have the appropriate creation date (and a similar thing for the update date).