Regel auf pg_catalog

Hallo,

ist es grundsätzlioch möglich, Regeln auf Systemtabellen anzuwenden?
Ich habe eine _INSERT Regel auf die Tabelle ‘pg_class’ geschrieben, die mir bei einem Insert (also nachdem eine neue Tabelle etc. angelegt wurde) eine eigene Tab aktualisieren soll. Funktioniert aber nicht…es scheint, als ob die Regel nicht ausgelöst wird?!

Regeln basieren IIRC auf Trigger, und Trigger gehen nicht auf Systemtabellen. Manchmal Schade, ich weiß.

Mit anderen Worten: ohne es versucht zu haben, denke ich, es geht nicht. Was hast Du denn versucht, und was passiert?

Andreas

ich habe eine schnöde Regel auf ‘pg_class’ definiert. Es sollte die oid der neu angelegten class (bei mir nur tabellen) an eine eigene tabelle angefügt werden. Diese eigene tab dupliziert quasi pg_class. Dort habe ich ein boolean-Feld, über das ich eben besagte table_oid true oder false setzen kann. So steuere ich aus dem Backend oder sonstwoher, welche Tabs im Frontend engebunden werden.

bau dir ein view - das an die pg_class deine eigene “system-tabelle” joint (LEFT JOIN) … wenn in deiner system-tabelle ein datensatz zur pg_class existiert und das extra-flag true ist, dann tab anzeigen, sonst nicht. diese extra-tabelle hast du ja sowieso vor zu pflegen (ist ja auch sinnvoll)

damit bist du immer aktuell und brauchst keine rule

sei doch mal pragmatisch :slight_smile:

Genau so mache ich das…nur das ‘sowieso vor zu pflegen’ wollte ich mir sparen!

wieso sparen …

der view zeigt dir was du potentiell verwenden kannst … die table mit den zusatz-daten enthaelt nur das, was dich interessiert - der default ist “nö” …

glaub mir - früher oder später ist das, was du jetzt als “notlösung” betrachtest sowieso “DIE lösung”