Postgresql: один уникальный индекс для нескольких таблиц?
Добрый день.
Есть несколько таблиц с разной структурой. При этом в каждой из этих таблиц есть поле hash. Мне нужно чтобы значение этого поля было уникальным для всех этих таблиц. Что то вроде одного уникального ключа на несколько таблиц.
Подскажите, есть ли способ сделать это на уровне СУРБД, а не ручной проверкой из кода?
Если у кому-то интересно решил это так: создал sequence "hash_seq" и для этих полей прописал дефолтное значение nextval('hash_seq'). Уникальность гарантирована, если нигде не вписывать это значение вручную.
Но такой способ действует только в том случае, если нужна уникальность значений, но не обязательно самому указывать значения.
sim3x: Изначально хеш был просто случайной строкой. Но в данном решенее это просто число, которое при необходимости можно добить нулями слева до нужной длинны.
Это костыль, а не решение. Так как не решает поставленую задачу в полной мере. Обеспечивает уникальность, но СУРБД не страхует от ошибки в случае прямой модификации.