des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

Можно ли создать уникальный ключ по месяцу и году?

можно ли создать уникальный ключ на запрет записи, если уже есть данные на такой месяц?
что то вроде unique constraint с to_char(timestamp,'YYYY-MM')
--
UPD
таким образом я проверяю чтобы несколько полей не были одинаковыми
CONSTRAINT uniq UNIQUE("F_ActualAnaliz_ID", "F_DateAnaliz", "F_User_ID"),

но можно ли
CONSTRAINT uniq UNIQUE(to_char(f_DateAnaliz, 'YYYY-MM')),
  • Вопрос задан
  • 308 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
В Postgresql - да, можно: www.postgresql.org/docs/9.4/static/indexes-express...
Строить индекс можно для любой immutable функции, в том числе для пользовательской.

Только лучше не to_char, а date_trunc('month', f_DateAnaliz). Индекс получится компактнее.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
gephaest
@gephaest
PHP, Yii2, Laravel
Да, можно, более того выборка по этому полю будет работать быстрее, поскольку вы создаете индекс.
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
Уникальным ключом в целом может быть что угодно. Хоть битовое поле. Проблемы могут начаться когда по каким-то причинам вы захотите добавить вторую запись с тем же ключом и придется придумывать составной ключ. Тут же появится проблема обратной совместимости и миграции данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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