SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.03.2014 11:33:37

wowan
Участник
Зарегистрирован: 03.03.2014
Сообщений: 14

Составной уникальный индекс из части даты и строкового поля. Возможно ли?

Здравствуйте.
помогите плиз советом.
Необходимо обеспечить уникальность нумерации договоров в пределах года.
Т.е 2013 год начинается с 1.....
2014 с 1-цы ....
и т.п.

Как такового поля с годом нет, но есть поле с полной датой договора. Соответственно в индекс нужно включать только часть поля с годом. Возможно ли это?
В phpmyadmin при создании индекса из 2-х полей и  выборе поля с датой попробовал указать размер =4
получил ошибку
#1089 - Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys


Так что пока мысль только одна. Для составного индекса создать символьное поле с годом и на уровне приложения обеспечивать его синхранизацию из поля даты. Может есть более красивые варианты?

Неактивен

 

#2 30.03.2014 16:12:50

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Составной уникальный индекс из части даты и строкового поля. Возможно ли?

Если правильно понял постановку задачи, то можно триггером вычислять уникальный номер договора в рамках года. Когда вставляете новую запись в таблицу - можно сделать, чтобы триггер вызывал хранимую процедуру, а там уже запросом вычислялся допустимый номер.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 30.03.2014 17:11:39

wowan
Участник
Зарегистрирован: 03.03.2014
Сообщений: 14

Re: Составной уникальный индекс из части даты и строкового поля. Возможно ли?

Видимо на уровне уникальности индекса нельзя..
У меня вычисление уникального номера более сложное и зависит от типа договора. На уровне приложения мне представляется более удобным это делать, чем в триггере. Хотя Ваш вариант, безусловно, более универсален. Спасибо большое.
Видимо без скрытого поля Год не обойтись.. Если не получится или будет криво работать, то последую Вашему совету.

Отредактированно wowan (30.03.2014 17:15:32)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson