@DimkaI
Системный адинистратор, разработчик ПО

Как задать уникальность поля совместно с полем из другой таблицы?

Суть такова:
Есть таблица типов:
types
------
id,
name,
prefix


Таблица моделей
models
--------
id,
name
type_id


И таблица изделий:
items
------
id
model_id
number


Между собой таблицы связаны - модель и тип по type_id, id, а изделия и модели по model_id и id
Собственно суть вопроса - необходимо обеспечить уникальность поля number в items совместно с полем prefix в types.
То есть при создании запроса:
SELECT
    a.id,
    to_char(c.prefix, 'FM0000') || '-' || to_char(a.number, 'FM0000000000') AS code
FROM
   items  AS a
   INNER JOIN models AS b ON a.model_id = b.id
   INNER JOIN types AS c ON b.type_id = c.id

поле code должно быть уникальным, в то время как number и prefix могут повторяться в своих таблицах.
INDEX не создаётся для двух и более таблиц.
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
@rPman
Универсальный способ для любых БД и выкрутасов, что вы придумаете - создаете таблицу с полем и индексом в нужном вам формате, и заполняете ее триггером. Если фейлится индекс этой таблицы, сфейлится и запрос на изменение подчиненных таблиц, только что сообщение об ошибке будет 'не привычное'.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы