Skip to content
Advertisement

Create Trigger to update the record that was newly inserted on PostgreSQL

I want the trigger to fire when a new record is inserted, and update that newly inserted record to add a current date and time, need help please be kind still new here 🙁

here’s my code:

FUNCTION:

JavaScript

TRIGGER:

JavaScript

Advertisement

Answer

Your WHERE condition is needlessly complicated (and slow) as you could replace it with where owner_no = new.owner_no as you have full access to the inserted (or updated) row in the trigger.

However, there is no need for a costly UPDATE statement. Use a BEFORE trigger, and assign the values to the fields in the new record:

JavaScript

And declare the trigger as a BEFORE trigger:

CREATE TRIGGER trg__update_date_sync 
  BEFORE INSERT ON dbo.rptowner 
  FOR EACH ROW EXECUTE PROCEDURE dbo.func_update_date_sync()

As a side note: Most people are not aware that now() is a synonym for transaction_timestamp(). So all rows inserted or updated in a single transaction will have exactly the same value for date_sync. If that is OK for you, then everything is fine. If you expect each row to have a (slightly) different timestamp, you should use clock_timestamp() instead.

User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement