Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Update trigger not firing in plpgsql

I have an update trigger and insert trigger on a table nums with two columns namely name,number.Whenever data is updated or inserted then these triggers are executed.

CREATE OR REPLACE FUNCTION add_log()
RETURNS trigger AS
$BODY$
DECLARE
    account_type varchar;
BEGIN   

    IF (TG_OP = 'INSERT') THEN
        INSERT INTO log
            VALUES(
                now(),
                'inserted data is name : '||NEW.name||' num : '||NEW.number
                );
        RETURN NEW;
     ELSEIF (TG_OP = 'update') THEN
    INSERT INTO log VALUES
        (
            now(),
            'updated record with old num :'||OLD.number||' with new num : '||NEW.number
        );
    RETURN OLD;
    END IF;

    RETURN null;
END;
$BODY$
  LANGUAGE plpgsql

creating trigger:

CREATE TRIGGER add_log_trigger
AFTER INSERT OR UPDATE
ON nums
FOR EACH ROW
EXECUTE PROCEDURE add_log();

When an insert operation is performed, insert trigger is being fired.But when update operation is performed no update trigger is being fired.Why?

like image 491
Pradeep Avatar asked Aug 17 '26 12:08

Pradeep


1 Answers

String comparison is case-sensitive in Postgres. Try TG_OP = 'UPDATE' instead of TG_OP = 'update'.

like image 92
Kristján Avatar answered Aug 20 '26 01:08

Kristján