Задать вопрос
@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 не создаётся для двух и более таблиц.
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 1
@rPman
Универсальный способ для любых БД и выкрутасов, что вы придумаете - создаете таблицу с полем и индексом в нужном вам формате, и заполняете ее триггером. Если фейлится индекс этой таблицы, сфейлится и запрос на изменение подчиненных таблиц, только что сообщение об ошибке будет 'не привычное'.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы