7 Stimmen

Fremdschlüssel zu einer pg_catalog-Tabelle in PostgreSQL

Ist es möglich, einen Fremdschlüssel zu haben, der auf ein Feld einer Systemkatalogtabelle (pg_catalog) zeigt?

Wenn ich das Folgende versuche:

ALTER TABLE my_table ADD CONSTRAINT fk_my_table FOREIGN KEY (role_name) REFERENCES pg_roles(rolname) ON UPDATE CASCADE;

Ich verstehe:

ERROR:  referenced relation "pg_roles" is not a table

7voto

solaimuruganv Punkte 23430

Das ist nicht möglich.
Wenn Sie es mit Systemtabellen versuchen, erhalten Sie die folgende Fehlermeldung

  ********** Error **********
    ERROR: permission denied: "pg_attribute" is a system catalog
    SQL state: 42501

Das System würde die Einschränkung nicht durchsetzen, selbst wenn Sie die Erlaubnis aufheben. Wir können also keine Einschränkung mit einer Systemtabellenreferenz erstellen.

wenn u wenige Rollen haben, dann gehen Sie für die manuelle Prüfung oder erstellen Sie temporäre Tabelle als von pg_roles dann eine Einschränkung machen.

create temp table test1 as select * from pg_roles

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X