Last time , we created a heirarchy of tables for logging, but we don't have anything they'd log, and we don't have a way to ensure the logging happens automagically. This time, we'll fix those problems. First, a thing to log: CREATE TABLE foo( id BIGSERIAL PRIMARY KEY, t TEXT ); Next, let's make an efficient trigger function. You may have seen one of these before, but it was probably row-based, so it couldn't be super efficient. This one is statement-based, and uses the new transition table feature in PostgreSQL 10. We only need to build one trigger function because our logging infrastructure is schema-agnostic. We could have separated it into three trigger functions, but that's just more code to maintain. It starts off as usual: CREATE OR REPLACE FUNCTION log() RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN IF TG_OP NOT IN ('INSERT', 'UPDATE', 'DELETE') THEN ...
Comments
Post a Comment