Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6714413
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T08:29:35+00:00 2026-05-26T08:29:35+00:00

I want to create a trigger on a table called takes in postgresql to

  • 0

I want to create a trigger on a table called takes in postgresql to update a value in another table called student
I’m trying to do it in the following way. But I’m getting an error that there is syntax error near "OLD". I don’t understand whats wrong with this. This is my code:

CREATE OR REPLACE FUNCTION upd8_cred_func
  (id1 VARCHAR, gr1 VARCHAR,id2 VARCHAR, gr2 VARCHAR) 
RETURNS void AS $$
BEGIN
  IF (id1=id2 and gr1 is null and gr2 is not null) THEN 
    update student set tot_cred = tot_cred + 6 where id = id1;
  END IF;
    RETURN;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER upd8_cred AFTER UPDATE ON takes
FOR EACH ROW EXECUTE PROCEDURE 
upd8_cred_func(OLD.id, OLD.grade, NEW.id, NEW.grade);
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T08:29:36+00:00Added an answer on May 26, 2026 at 8:29 am

    You do not need to pass the NEW and OLD as parameters to the trigger function. They are automagically available there:

    http://www.postgresql.org/docs/9.1/interactive/trigger-definition.html :

    The trigger function must be declared as a function taking no arguments and returning type trigger. (The trigger function receives its input through a specially-passed TriggerData structure, not in the form of ordinary function arguments.)

    About the records passed to the trigger procedure, please see http://www.postgresql.org/docs/9.1/interactive/plpgsql-trigger.html :

    When a PL/pgSQL function is called as a trigger, several special variables are created automatically in the top-level block. They are: […] NEW, […] OLD […]

    As SeldomNeedy pointed in the comment below, you can still pass and use parameters to the trigger function. You declare the function as taking no parameters, but when defining the trigger (by CREATE TRIGGER), you may add some.

    They will be available for the trigger as TG_NARG (the number of such parameters), and TG_ARGV[] (an array of text values).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I want to create a trigger that execute on update of a table. in
I want to create a table trigger for insert and update. How can I
I've got the following trigger; CREATE TRIGGER trFLightAndDestination ON checkin_flight AFTER INSERT,UPDATE AS BEGIN
I want to create trigger which will be fired after insert into some table,
I've the following DB structure in SQLite: I want to create a trigger that
I want to create a trigger owned by user A for a table that
I am new to triggers and want to create a trigger on an update
I want to create a trigger for logging.So i need event names of INSERT,UPDATE
I want to create a trigger that will update the column LastActivityDate to the
I want to create a trigger in foxpro that will execute after every update

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.