GreenPlum. Как создать ограничения на внешний ключ

Есть 2 таблицы:
table2:

CREATE TABLE public.table2 (
    b serial4 NOT NULL,
    b1 varchar NULL,
    CONSTRAINT table2_pk PRIMARY KEY (b)
);

table1:

CREATE TABLE public.table1 (
    a serial4 NOT NULL,
    b int4 NULL,
    d varchar NULL,
    CONSTRAINT table1_pk PRIMARY KEY (a),
    CONSTRAINT table1_fk FOREIGN KEY (b) REFERENCES public.table2(b)
);

Содержание таблицы table2
Содержание таблицы table2

Содержание таблицы table1
Содержание таблицы table1

При выполнении вставки в таблицу table1:

INSERT INTO public.table1
(a, b, d)
VALUES(nextval('table1_a_seq'::regclass), 3, 'Пример 3');

Ошибки не вызывает и это в Greenplum нормально.
Вопрос:
Как реализовать механизм контроля существования значений внешних ключей? Чтобы при выполнении вышеприведенной вставки база сообщала, что ключ в таблице table2 не найден.


Ответы (1 шт):

Автор решения: Akina

CREATE TABLE

Greenplum accepts referential integrity constraints but does not enforce them.

SET CONSTRAINTS

Referential integrity syntax (foreign key constraints) is accepted but not enforced.


Как реализовать механизм контроля существования значений внешних ключей?

Ну, может, попробовать решить проблему экстенсивно? долой запросы, даёшь процедуры. А уж в процедуре можно проверить любые мыслимые условия..

→ Ссылка