3

システムカタログ(pg_catalog)テーブルのフィールドを指す外部キーを持つことは可能ですか?

私が次のことを試してみると:

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

私は得る:

ERROR:  referenced relation "pg_roles" is not a table
4

1 に答える 1

3

不可能です。
システムテーブルを使用しようとすると、次のようなエラーが発生します

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

権限を上書きしても、システムは制約を適用しません。そのため、システムテーブル参照を使用して制約を作成することはできません。

役割がほとんどない場合は、手動チェックを行うか、pg_rolesから一時テーブルを作成してから制約を作成します。

create temp table test1 as select * from pg_roles 
于 2012-09-25T07:34:40.390 に答える