Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Здравствуйте.
помогите плиз советом.
Необходимо обеспечить уникальность нумерации договоров в пределах года.
Т.е 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
Так что пока мысль только одна. Для составного индекса создать символьное поле с годом и на уровне приложения обеспечивать его синхранизацию из поля даты. Может есть более красивые варианты?
Неактивен
Если правильно понял постановку задачи, то можно триггером вычислять уникальный номер договора в рамках года. Когда вставляете новую запись в таблицу - можно сделать, чтобы триггер вызывал хранимую процедуру, а там уже запросом вычислялся допустимый номер.
Неактивен
Видимо на уровне уникальности индекса нельзя..
У меня вычисление уникального номера более сложное и зависит от типа договора. На уровне приложения мне представляется более удобным это делать, чем в триггере. Хотя Ваш вариант, безусловно, более универсален. Спасибо большое.
Видимо без скрытого поля Год не обойтись.. Если не получится или будет криво работать, то последую Вашему совету.
Отредактированно wowan (30.03.2014 17:15:32)
Неактивен
Страниц: 1