Re: Writing my first trigger
Andreas Kretschmer <andreas@a-kretschmer.de>
From: Andreas Kretschmer <andreas@a-kretschmer.de>
To: pgsql-novice@lists.postgresql.org
Date: 2022-05-20T15:06:11Z
Lists: pgsql-novice
Am 19.05.22 um 20:18 schrieb Chris Tsongas: > Working on my first trigger to create a fullName value from firstName, > optional preferredFirstName, and lastName fields, where the full name > uses the optional preferred first name if it exists, otherwise it uses > the first name and of course the required last name. > > Would be great to get feedback on the following code before I try > running it (note I already have an employee table, just including the > CREATE TABLE statement for clarity): > > CREATE TABLE employee ( > firstName text NOT NULL, > preferredFirstName text, > lastName text NOT NULL, > fullName text, > ); > > CREATE OR REPLACE FUNCTION update_employee() RETURNS TRIGGER AS $$ > BEGIN > IF (OLD."preferredFirstName" IS NOT NULL) THEN > NEW."fullName" = OLD."preferredFirstName" || ' ' || OLD."lastName"; > ELSE > NEW."fullName" = OLD."firstName" || ' ' || OLD."lastName"; > END IF; > NEW."updatedAt" = now(); > RETURN NEW; > END; > $$ LANGUAGE plpgsql; > > CREATE TRIGGER fullName > INSTEAD OF INSERT OR UPDATE ON employee > FOR EACH ROW EXECUTE FUNCTION update_employee(); > your table doesn't contain the field "updatedA". I would suggest to calculate the fullName at select-time and not via TRIGGER. Andreas -- 2ndQuadrant, an EDB company www.2ndQuadrant.com / www.enterprisedb.com