Одна из моих таблиц имеет следующее определение:
CREATE TABLE incidents
(
id serial NOT NULL,
report integer NOT NULL,
year integer NOT NULL,
month integer NOT NULL,
number integer NOT NULL, -- Report serial number for this period
...
CONSTRAINT PRIMARY KEY (id),
CONSTRAINT UNIQUE (report, year, month, number)
);
Как вы могли бы увеличить число столбцов number
для каждого report
, year
и month
независимо? Я хотел бы избежать создания последовательности или таблицы для каждого (report
, year
, month
).
Было бы неплохо, если PostgreSQL поддерживал инкремент " во вторичном столбце в столбце с несколькими столбцами" как MySQL MyISAM, но я не удалось найти упоминание о такой функции в руководстве.
Очевидным решением является выбор текущего значения в таблице + 1, но это, очевидно, небезопасно для одновременных сеансов. Может быть, триггер pre-insert будет работать, но гарантированно ли они несовместимы?
Также обратите внимание, что я вставляю инциденты индивидуально, поэтому я не могу использовать generate_series, как предлагалось в других местах.