iloom-flatten/migrations/20260604_143746_create_audit_trigger_function.sql

76 lines
2.0 KiB
MySQL
Raw Normal View History

-- ============================================
-- 此文件由 Meoo Cloud 自动生成,请勿修改
-- This file is auto-generated by Meoo Cloud, DO NOT MODIFY
-- ============================================
CREATE OR REPLACE FUNCTION log_data_audit()
RETURNS TRIGGER LANGUAGE plpgsql AS $$
DECLARE
v_old_values JSONB;
v_new_values JSONB;
v_operation TEXT;
BEGIN
v_operation := TG_OP;
IF TG_OP = 'DELETE' THEN
v_old_values := to_jsonb(OLD);
v_new_values := NULL;
ELSIF TG_OP = 'UPDATE' THEN
v_old_values := to_jsonb(OLD);
v_new_values := to_jsonb(NEW);
ELSE
v_old_values := NULL;
v_new_values := to_jsonb(NEW);
END IF;
INSERT INTO data_audit_logs (
table_name, record_id, operation, old_values, new_values, changed_by
) VALUES (
TG_TABLE_NAME,
COALESCE(NEW.id, OLD.id),
v_operation,
v_old_values,
v_new_values,
auth.uid()
);
IF TG_OP = 'DELETE' THEN
RETURN OLD;
ELSE
RETURN NEW;
END IF;
END;
$$;
DROP TRIGGER IF EXISTS trg_audit_production_plans ON production_plans;
CREATE TRIGGER trg_audit_production_plans
AFTER INSERT OR UPDATE OR DELETE ON production_plans
FOR EACH ROW
EXECUTE FUNCTION log_data_audit();
DROP TRIGGER IF EXISTS trg_audit_inventory_records ON inventory_records;
CREATE TRIGGER trg_audit_inventory_records
AFTER INSERT OR UPDATE OR DELETE ON inventory_records
FOR EACH ROW
EXECUTE FUNCTION log_data_audit();
DROP TRIGGER IF EXISTS trg_audit_payments ON payments;
CREATE TRIGGER trg_audit_payments
AFTER INSERT OR UPDATE OR DELETE ON payments
FOR EACH ROW
EXECUTE FUNCTION log_data_audit();
DROP TRIGGER IF EXISTS trg_audit_accounts_payable ON accounts_payable;
CREATE TRIGGER trg_audit_accounts_payable
AFTER INSERT OR UPDATE OR DELETE ON accounts_payable
FOR EACH ROW
EXECUTE FUNCTION log_data_audit();
DROP TRIGGER IF EXISTS trg_audit_accounts_payable_items ON accounts_payable_items;
CREATE TRIGGER trg_audit_accounts_payable_items
AFTER INSERT OR UPDATE OR DELETE ON accounts_payable_items
FOR EACH ROW
EXECUTE FUNCTION log_data_audit();