Как использовать последовательность идентификаторов таблицы «B» в моей таблице «A»? - PullRequest
0 голосов
/ 04 октября 2018

Проблема заключается в следующем:

У меня есть таблица (назовем ее таблицей A) и другая таблица (таблица B).Мне нужно разделить последовательность таблицы B и использовать ее в A, чтобы у меня было 2 разные таблицы, но каждый раз, когда я вставляю строку в одну из таблиц, она будет вести себя как две таблицыбыла одна таблица, например:

table A:          table B:

 id|               id|
  4|                1|
  5|                2|
  6|                3|  
  8|                7|  

Я не мог найти, как это сделать, поэтому вместо этого я создал триггер при обновлении, который обновляет id строки, вставленной в таблицу A и заменяет на следующее значение последовательности таблицы B, код следующий:

CREATE OR REPLACE FUNCTION credo.atz_id_reserva()
  RETURNS trigger AS
$BODY$
    BEGIN
        IF (TG_OP = 'INSERT') THEN

            UPDATE credo.reserva_pto_cta
            SET id = (select nextval('credo.documento_id_seq'));

        END IF;
        RETURN NULL;
    END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION credo.atz_id_reserva()
  OWNER TO postgres;

Я что-то не так сделал, что-то не так?

1 Ответ

0 голосов
/ 04 октября 2018

Но это так просто:

CREATE SEQUENCE shared_seq;

CREATE TABLE a (
   id bigint PRIMARY KEY DEFAULT nextval('shared_seq'),
   ...
);

CREATE TABLE b (
   id bigint PRIMARY KEY DEFAULT nextval('shared_seq'),
   ...
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...