PL/pgSQL & triggers
◈ 2 cardsProcedural logic, and code that fires on data changes.
Procedures and triggers
For real logic — loops, conditionals, variables — use PL/pgSQL:
CREATE FUNCTION price_band(p numeric) RETURNS text AS $$
BEGIN
IF p < 12 THEN RETURN 'budget';
ELSIF p < 20 THEN RETURN 'standard';
ELSE RETURN 'premium';
END IF;
END;
$$ LANGUAGE plpgsql;
A trigger runs a function automatically when rows change — perfect for audit logs, derived values, or enforcing rules. A trigger function returns trigger and can read NEW/OLD:
CREATE TRIGGER book_added AFTER INSERT ON books
FOR EACH ROW EXECUTE FUNCTION log_book();