Thread: Tigger
I've look throught the docs and from what I can see the bellow code should work, however I keep getting the error: ERROR: parser: parse error at or near "$" at character 53 CREATE FUNCTION session_update() RETURNS trigger AS $session_update$ BEGIN-- Check date existsIF NEW.stamp_lastupdate IS NULL THEN NEW.stamp_lastupdate := 'now';END IF;RETURN NEW; END; $session_update$ LANGUAGE plpgsql; CREATE TRIGGER session_update BEFORE INSERT OR UPDATE ON sessions FOR EACH ROW EXECUTE PROCEDURE session_update(); Any help or suggestions of websites I should read would be appercated. David _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today - it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
David Hofmann wrote: > I've look throught the docs and from what I can see the bellow code > should work, however I keep getting the error: > > ERROR: parser: parse error at or near "$" at character 53 > > CREATE FUNCTION session_update() RETURNS trigger AS $session_update$ > BEGIN > -- Check date exists > IF NEW.stamp_lastupdate IS NULL THEN > NEW.stamp_lastupdate := 'now'; > END IF; > RETURN NEW; > END; > > $session_update$ LANGUAGE plpgsql; > > CREATE TRIGGER session_update BEFORE INSERT OR UPDATE ON sessions FOR > EACH ROW EXECUTE PROCEDURE session_update(); > > > Any help or suggestions of websites I should read would be appercated. > > David Which version of postgresql are you using? I don't believe that the "$" quoting was available in older versions than 8 (or late 7?). -- _______________________________ This e-mail may be privileged and/or confidential, and the sender does not waive any related rights and obligations. Any distribution, use or copying of this e-mail or the information it contains by other than an intended recipient is unauthorized. If you received this e-mail in error, please advise me (by return e-mail or otherwise) immediately. _______________________________
I'm using 7.3. >From: Bricklen Anderson <BAnderson@PresiNET.com> >To: David Hofmann <mor4321@hotmail.com> >CC: pgsql-sql@postgresql.org >Subject: Re: [SQL] Tigger >Date: Fri, 22 Jul 2005 12:17:41 -0700 > >David Hofmann wrote: > > I've look throught the docs and from what I can see the bellow code > > should work, however I keep getting the error: > > > > ERROR: parser: parse error at or near "$" at character 53 > > > > CREATE FUNCTION session_update() RETURNS trigger AS $session_update$ > > BEGIN > > -- Check date exists > > IF NEW.stamp_lastupdate IS NULL THEN > > NEW.stamp_lastupdate := 'now'; > > END IF; > > RETURN NEW; > > END; > > > > $session_update$ LANGUAGE plpgsql; > > > > CREATE TRIGGER session_update BEFORE INSERT OR UPDATE ON sessions FOR > > EACH ROW EXECUTE PROCEDURE session_update(); > > > > > > Any help or suggestions of websites I should read would be appercated. > > > > David > >Which version of postgresql are you using? I don't believe that the "$" >quoting >was available in older versions than 8 (or late 7?). > >-- >_______________________________ > >This e-mail may be privileged and/or confidential, and the sender does >not waive any related rights and obligations. Any distribution, use or >copying of this e-mail or the information it contains by other than an >intended recipient is unauthorized. If you received this e-mail in >error, please advise me (by return e-mail or otherwise) immediately. >_______________________________ _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today - it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
David Hofmann wrote: > I'm using 7.3. > >> From: Bricklen Anderson <BAnderson@PresiNET.com> >> To: David Hofmann <mor4321@hotmail.com> >> CC: pgsql-sql@postgresql.org >> Subject: Re: [SQL] Tigger >> Date: Fri, 22 Jul 2005 12:17:41 -0700 >> >> David Hofmann wrote: >> > I've look throught the docs and from what I can see the bellow code >> > should work, however I keep getting the error: >> > >> > ERROR: parser: parse error at or near "$" at character 53 >> > >> > CREATE FUNCTION session_update() RETURNS trigger AS $session_update$ >> > BEGIN >> > -- Check date exists >> > IF NEW.stamp_lastupdate IS NULL THEN >> > NEW.stamp_lastupdate := 'now'; >> > END IF; >> > RETURN NEW; >> > END; >> > >> > $session_update$ LANGUAGE plpgsql; >> > >> > CREATE TRIGGER session_update BEFORE INSERT OR UPDATE ON sessions FOR >> > EACH ROW EXECUTE PROCEDURE session_update(); >> > >> > >> > Any help or suggestions of websites I should read would be appercated. >> > >> > David >> >> Which version of postgresql are you using? I don't believe that the >> "$" quoting >> was available in older versions than 8 (or late 7?). I don't think that it worked then. Simple test: CREATE FUNCTION session_update() RETURNS trigger AS ' BEGIN-- Check date existsIF NEW.stamp_lastupdate IS NULL THEN NEW.stamp_lastupdate := ''now'';END IF;RETURN NEW; END; ' LANGUAGE plpgsql; -- _______________________________ This e-mail may be privileged and/or confidential, and the sender does not waive any related rights and obligations. Any distribution, use or copying of this e-mail or the information it contains by other than an intended recipient is unauthorized. If you received this e-mail in error, please advise me (by return e-mail or otherwise) immediately. _______________________________
David Hofmann wrote: > > I've look throught the docs and from what I can see the bellow code > > should work, however I keep getting the error: > > > > ERROR: parser: parse error at or near "$" at character 53 > > > > CREATE FUNCTION session_update() RETURNS trigger AS $session_update$ > > BEGIN > > -- Check date exists > > IF NEW.stamp_lastupdate IS NULL THEN > > NEW.stamp_lastupdate := 'now'; > > END IF; > > RETURN NEW; > > END; > > > > $session_update$ LANGUAGE plpgsql; > > > > CREATE TRIGGER session_update BEFORE INSERT OR UPDATE ON sessions FOR > > EACH ROW EXECUTE PROCEDURE session_update(); > > > > > > Any help or suggestions of websites I should read would be appercated. > > > > David > > Which version of postgresql are you using? I don't believe that the "$" quoting > was available in older versions than 8 (or late 7?). > the $ quoting is available since 8. This seems bad to me also: > > CREATE FUNCTION session_update() RETURNS trigger AS $session_update$ > > [..function body..] > > $session_update$ LANGUAGE plpgsql; I think it should be: CREATE FUNCTION session_update() RETURNS trigger AS $$ [..function body..] $$ LANGUAGE plpgsql; -- Atentamente, Jaime Casanova (DBA: DataBase Aniquilator ;)
Jaime Casanova wrote: > This seems bad to me also: > >>>CREATE FUNCTION session_update() RETURNS trigger AS $session_update$ >>>[..function body..] >>>$session_update$ LANGUAGE plpgsql; > > > I think it should be: > CREATE FUNCTION session_update() RETURNS trigger AS $$ > [..function body..] > $$ LANGUAGE plpgsql; > No, the identifier between the $$ is legit, providing you're at v8 and above. -- _______________________________ This e-mail may be privileged and/or confidential, and the sender does not waive any related rights and obligations. Any distribution, use or copying of this e-mail or the information it contains by other than an intended recipient is unauthorized. If you received this e-mail in error, please advise me (by return e-mail or otherwise) immediately. _______________________________
It didn't error out, however the function didn't work. Specificly the if statement. I took out the if statement and it started updating, I put it back in and it fails to update. Not sure why. I've confirmed that the program not attempting to update the stamp_lastupdate field. Here what I end up with that worked. CREATE or REPLEACE FUNCTION session_update() RETURNS trigger AS ' BEGIN-- Check date existsNEW.stamp_lastupdate := ''now'';RETURN NEW; END; ' LANGUAGE plpgsql; CREATE TRIGGER session_update BEFORE INSERT OR UPDATE ON sessions FOR EACH ROW EXECUTE PROCEDURE session_update(); I appercated the help Bricklen. David >From: Bricklen Anderson <BAnderson@PresiNET.com> >To: David Hofmann <mor4321@hotmail.com> >CC: pgsql-sql@postgresql.org >Subject: Re: [SQL] Tigger >Date: Fri, 22 Jul 2005 12:28:32 -0700 > >David Hofmann wrote: > > I'm using 7.3. > > > >> From: Bricklen Anderson <BAnderson@PresiNET.com> > >> To: David Hofmann <mor4321@hotmail.com> > >> CC: pgsql-sql@postgresql.org > >> Subject: Re: [SQL] Tigger > >> Date: Fri, 22 Jul 2005 12:17:41 -0700 > >> > >> David Hofmann wrote: > >> > I've look throught the docs and from what I can see the bellow code > >> > should work, however I keep getting the error: > >> > > >> > ERROR: parser: parse error at or near "$" at character 53 > >> > > >> > CREATE FUNCTION session_update() RETURNS trigger AS $session_update$ > >> > BEGIN > >> > -- Check date exists > >> > IF NEW.stamp_lastupdate IS NULL THEN > >> > NEW.stamp_lastupdate := 'now'; > >> > END IF; > >> > RETURN NEW; > >> > END; > >> > > >> > $session_update$ LANGUAGE plpgsql; > >> > > >> > CREATE TRIGGER session_update BEFORE INSERT OR UPDATE ON sessions FOR > >> > EACH ROW EXECUTE PROCEDURE session_update(); > >> > > >> > > >> > Any help or suggestions of websites I should read would be >appercated. > >> > > >> > David > >> > >> Which version of postgresql are you using? I don't believe that the > >> "$" quoting > >> was available in older versions than 8 (or late 7?). > >I don't think that it worked then. Simple test: > >CREATE FUNCTION session_update() RETURNS trigger AS ' >BEGIN > -- Check date exists > IF NEW.stamp_lastupdate IS NULL THEN > NEW.stamp_lastupdate := ''now''; > END IF; > RETURN NEW; >END; >' LANGUAGE plpgsql; > >-- >_______________________________ > >This e-mail may be privileged and/or confidential, and the sender does >not waive any related rights and obligations. Any distribution, use or >copying of this e-mail or the information it contains by other than an >intended recipient is unauthorized. If you received this e-mail in >error, please advise me (by return e-mail or otherwise) immediately. >_______________________________ _________________________________________________________________ Don�t just search. Find. Check out the new MSN Search! http://search.msn.click-url.com/go/onm00200636ave/direct/01/