fix: pssql triggers - map tgtype to timing / event type correctly

This commit is contained in:
Nybkox
2024-12-19 09:53:11 +01:00
parent d75b9e2688
commit 56972652d5

View File

@@ -10,18 +10,17 @@ SELECT
WHEN t.tgtype & 1 = 1 THEN 'ROW' WHEN t.tgtype & 1 = 1 THEN 'ROW'
ELSE 'STATEMENT' ELSE 'STATEMENT'
END AS trigger_level, END AS trigger_level,
CASE COALESCE(
WHEN tgtype & 2 = 2 THEN 'AFTER' CASE WHEN (tgtype::int::bit(7) & b'0000010')::int = 0 THEN NULL ELSE 'BEFORE' END,
WHEN tgtype & 1 = 1 THEN 'BEFORE' CASE WHEN (tgtype::int::bit(7) & b'0000010')::int = 0 THEN 'AFTER' ELSE NULL END,
ELSE NULL CASE WHEN (tgtype::int::bit(7) & b'1000000')::int = 0 THEN NULL ELSE 'INSTEAD' END,
END AS trigger_timing, ''
CASE )::text as trigger_timing,
WHEN tgtype & 32 = 32 THEN 'TRUNCATE' (CASE WHEN (tgtype::int::bit(7) & b'0000100')::int = 0 THEN '' ELSE 'INSERT' END) ||
WHEN tgtype & 16 = 16 THEN 'UPDATE' (CASE WHEN (tgtype::int::bit(7) & b'0001000')::int = 0 THEN '' ELSE 'DELETE' END) ||
WHEN tgtype & 8 = 8 THEN 'DELETE' (CASE WHEN (tgtype::int::bit(7) & b'0010000')::int = 0 THEN '' ELSE 'UPDATE' END) ||
WHEN tgtype & 4 = 4 THEN 'INSERT' (CASE WHEN (tgtype::int::bit(7) & b'0100000')::int = 0 THEN '' ELSE 'TRUNCATE' END)
ELSE NULL as event_type,
END AS event_type,
pg_get_triggerdef(t.oid) AS definition pg_get_triggerdef(t.oid) AS definition
FROM FROM
pg_trigger t pg_trigger t