Add created and edited user and date in PostgreSQL
A minimal example on how to add attributes in PostgreSQL table with autofilling created user and date and last edited user and date.
ALTER TABLE IF EXISTS my_schema."MyTable"
ADD COLUMN "_CREATED_USER" text DEFAULT CURRENT_USER,
ADD COLUMN "_CREATED_DATE" timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
ADD COLUMN "_EDITED_USER" text DEFAULT CURRENT_USER,
ADD COLUMN "_EDITED_DATE" timestamp without time zone DEFAULT CURRENT_TIMESTAMP;
CREATE FUNCTION my_schema.edited_date() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW."_EDITED_DATE" := NOW();
RETURN NEW;
END;
$$;
ALTER FUNCTION my_schema.edited_date() OWNER TO postgres;
CREATE FUNCTION my_schema.edited_user() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW."_EDITED_USER" := CURRENT_USER;
RETURN NEW;
END;
$$;
ALTER FUNCTION my_schema.edited_user() OWNER TO postgres;
CREATE TRIGGER MyTable_edited_user BEFORE UPDATE ON my_schema."MyTable" FOR EACH ROW EXECUTE PROCEDURE my_schema.edited_user();
CREATE TRIGGER MyTable_edited_date BEFORE UPDATE ON my_schema."MyTable" FOR EACH ROW EXECUTE PROCEDURE my_schema.edited_date();