PostgreSQL Snippets

From UVOO Tech Wiki
Jump to navigation Jump to search

Update update_at when table specified at bottom is updated.

CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
   IF row(NEW.*) IS DISTINCT FROM row(OLD.*) THEN
      NEW.updated_at = now();
      RETURN NEW;
   ELSE
      RETURN OLD;
   END IF;
END;
$$ language 'plpgsql';

CREATE TRIGGER mytable_update_at_ts
BEFORE UPDATE ON urls FOR EACH ROW EXECUTE PROCEDURE  update_updated_at_column();
SELECT 'up SQL query';
# Update updated_at column on update
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_at = now();
    RETURN NEW;
END;
$$ language 'plpgsql';

or even better but more costly compute if only if content has changed

CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
   IF row(NEW.*) IS DISTINCT FROM row(OLD.*) THEN
      NEW.updated_at = now();
      RETURN NEW;
   ELSE
      RETURN OLD;
   END IF;
END;
$$ language 'plpgsql';

BEFORE UPDATE ON my_table FOR EACH ROW EXECUTE PROCEDURE  update_updated_at_column();