-- Audit-Log technisch gegen Aenderung/Loeschung absichern (AUD-02, siehe
-- core-kanban/tickets/AUD-02.md). Ein Trigger statt nur GRANT/REVOKE, damit
-- der Schutz unabhaengig davon greift, mit welcher Rolle verbunden wird
-- (Akzeptanzkriterium 1: "auf Datenbankebene technisch unterbunden").
CREATE FUNCTION audit_events_prevent_mutation() RETURNS TRIGGER AS $$
BEGIN
    RAISE EXCEPTION 'audit_events ist append-only: % ist nicht erlaubt', TG_OP;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER audit_events_no_update
    BEFORE UPDATE ON audit_events
    FOR EACH ROW EXECUTE FUNCTION audit_events_prevent_mutation();

CREATE TRIGGER audit_events_no_delete
    BEFORE DELETE ON audit_events
    FOR EACH ROW EXECUTE FUNCTION audit_events_prevent_mutation();
