Ссылочные записи в таблице через столбец в postgresql - PullRequest
0 голосов
/ 26 марта 2020

У меня есть две таблицы: таблица A и таблица B, где я для таблицы B хочет добавить столбец, который ссылается на записи в таблице A

Это означает, что первая строка таблицы i для этой конкретной строки ответа столбца на в таблице А и др. c.

таблицы создаются как таковые

CREATE TABLE IF NOT EXISTS public.a
    (a_id BIGSERIAL PRIMARY KEY);

CREATE TABLE IF NOT EXISTS public.a_registration 
(
    a_id bigint REFERENCES a(a_id),
    a_row_id SERIAL PRIMARY KEY,
    valid tsrange,
    registration tsrange,
    registration_by varchar(255),
    name text
);


CREATE TABLE IF NOT EXISTS public.b
    (b_id BIGSERIAL PRIMARY KEY);

CREATE TABLE IF NOT EXISTS public.b_registration 
(
    b_id bigint REFERENCES b(b_id),
    b_row_id SERIAL PRIMARY KEY,
    valid tsrange,
    registration tsrange,
    registration_by varchar(255),
    person text
);

, как я добавляю ссылку на столбец, который должен содержать внешний ключ, в записи таблицы A, которые я делаю.

DO
$$
BEGIN
IF NOT EXISTS (SELECT FROM pg_attribute
               WHERE  attrelid = 'public.b_registration'::regclass  -- table name here 
               AND    attname = 'ref'    -- column name here
               AND    NOT attisdropped
              ) THEN

        ALTER TABLE public.b_registration 
        ADD COLUMN ref Serial references a_registration NULL;
ELSE
        ALTER TABLE public.b_registration
        ALTER COLUMN  ref  TYPE Serial references a_registration;
END IF;
END
$$;

дает мне ошибку о синтаксической ошибке

ERROR:  syntax error at or near "REFERENCES"
LINE 14:      ALTER COLUMN  ref TYPE  SERIAL REFERENCES s...

, но это никогда не сработает, но оператор true никогда не сработает, так как он утверждает, что есть

Я получаю эту ошибку

ERROR:  syntax error at or near "SERIAL"
LINE 11:   ADD COLUMN ref b_row_id SERIAL REFE...
...