Вы можете только создавать ссылки FK для конкретных таблиц - не просмотр, как information_schema.schemata
:
regress=> \dv information_schema.schemata
List of relations
Schema | Name | Type | Owner
--------------------+----------+------+----------
information_schema | schemata | view | postgres
(1 row)
Базового pg_catalog.pg_namespace
таблицы, которая поддерживает мнение:
regress=> select pg_get_viewdef('information_schema.schemata');
pg_get_viewdef
-----------------------------------------------------------------------------------------------------
SELECT (current_database())::information_schema.sql_identifier AS catalog_name, +
(n.nspname)::information_schema.sql_identifier AS schema_name, +
(u.rolname)::information_schema.sql_identifier AS schema_owner, +
(NULL::character varying)::information_schema.sql_identifier AS default_character_set_catalog, +
(NULL::character varying)::information_schema.sql_identifier AS default_character_set_schema, +
(NULL::character varying)::information_schema.sql_identifier AS default_character_set_name, +
(NULL::character varying)::information_schema.character_data AS sql_path +
FROM pg_namespace n, +
pg_authid u +
WHERE ((n.nspowner = u.oid) AND pg_has_role(n.nspowner, 'USAGE'::text));
(1 row)
regress=> \dt pg_catalog.pg_namespace
List of relations
Schema | Name | Type | Owner
------------+--------------+-------+----------
pg_catalog | pg_namespace | table | postgres
(1 row)
... тоже не юридическая цель для внешнего ключа, поскольку PostgreSQL не поддерживает ссылки на внешние ключи к системным таблицам:
regress=> CREATE TABLE blah (x text references pg_catalog.pg_namespace(nspname));
ERROR: permission denied: "pg_namespace" is a system catalog
Итак ... вы не можете.
Насколько я знаю, вы не можете ссылаться на * любую * системную таблицу в внешнем ключе (и, кроме того: все в 'information_schema' - это представление, вы никак не можете ссылаться на это) –
@a_horse_with_no_name, Спасибо за ваш отзыв! Пожалуйста, разместите его как ответ, возможно, он будет лучшим. –
Вы можете создать нечто вроде внешнего ключа с триггером ограничения, но он будет намного медленнее, чем фактический FK. –