2010-09-08 4 views
1

Клиент хочет, чтобы поле в БД mysql состояло из префикса, года и счетчика, который сбрасывается каждый год. PREFIX 2010 0001 ... PREFIX 2010 0734, а затем PREFIX 2011 0001. Есть ли какие-либо трюки mysql, чтобы это произошло, или я отслеживаю наибольшее количество, используемое на каждый год. Любые мысли оценили.Клиент хочет получить поле типа PREFIX20100001

ответ

1

MySQL не может создавать сложные поля, как это, но вы могли бы create a view, что симулировать его, основываясь на чем-то вроде:

SELECT CONCAT('PREFIX', YEAR(NOW()), MOD(id, 10000)), ... 

До тех пор пока не более чем 10 000 из них в течение года , он был бы относительно безопасен как «публичный» первичный ключ. И с положительной стороны, если поле id является обычным auto_increment int в фоновом режиме, у вас будет реальный первичный ключ для работы.

+1

Как часть идентификатора возвращается к '0001' в начале нового года? –

+0

... также - как насчет ведущих нулей для id-части? Я думаю, первое значение, полученное в примере кода, будет «PREFIX20101». –

+1

Правда. Некоторая магия, основанная на REPEAT(), LENGTH() и т. Д., Может обрабатывать отступы/форматирование. Годовой сброс будет сложнее. Возможно, серверная переменная с годовым триггером события для обновления с правильным смещением/модулем ... Это потребует некоторых экспериментов, но основы этого ответа, скорее всего, являются лучшим решением. –

 Смежные вопросы

  • Нет связанных вопросов^_^