sublimity
Новичок
Генерация уникальной записи, Нестандарный auto_increment
PHP+MYSQL:
Возник вопрос, в решении которого, я надеюсь, вы мне поможете.
Есть уникальный индентификатор товара. Он состоит из 10-ти символов.
Первые 5 символов будут получаться по определенному правилу. Причем для товаров, принадлежащих одной группе, эти символы будут одинаковыми. Оставшиеся 5 символов (именно символов, т.е. это и буквы и\или числа) должны быть сгенерированы. Эти символы должны быть уникальными.
Есть таблица с :
ID: bigint(20) unsigned NOT NULL auto_increment
IDText: char(20) NOT NULL
Type: tinyint(4) default '0',
Где:
IDText- это то самое поле,
Type- показывает свободна эта запись(0) или используется (1),или (3)-забронированна; т.к. индентификатор товара" может освобождаться и должен быть использован после.
Пример : допустим есть:
MOSAU1111A - занят
MOSAU1111B - свободен
MOSAU1111C - занят
....
MOSAU111ZZ - занят
И надо далее сгенерировать при добавлении "товара": MOSAU11A00
Или найти MOSAU1111B ,т.е. найти свободные или создать новые...
Причем это возможно и паралельно , т.е. надо исключить при генерации возможность создания на два товара одинаковых номеров.
Что вы посоветуете по реализации данной задачи?
Моя идея:
блокировать таблицу на чтение (чтобы параллельно не выполнялось то же самое), получить которые свободны и установить флаг в занято и освободить таблицу, и если таких не найдено получать все, которые есть (а там их может быть очень много), и пытаться на стороне PHP придумать следующий.
PHP+MYSQL:
Возник вопрос, в решении которого, я надеюсь, вы мне поможете.
Есть уникальный индентификатор товара. Он состоит из 10-ти символов.
Первые 5 символов будут получаться по определенному правилу. Причем для товаров, принадлежащих одной группе, эти символы будут одинаковыми. Оставшиеся 5 символов (именно символов, т.е. это и буквы и\или числа) должны быть сгенерированы. Эти символы должны быть уникальными.
Есть таблица с :
ID: bigint(20) unsigned NOT NULL auto_increment
IDText: char(20) NOT NULL
Type: tinyint(4) default '0',
Где:
IDText- это то самое поле,
Type- показывает свободна эта запись(0) или используется (1),или (3)-забронированна; т.к. индентификатор товара" может освобождаться и должен быть использован после.
Пример : допустим есть:
MOSAU1111A - занят
MOSAU1111B - свободен
MOSAU1111C - занят
....
MOSAU111ZZ - занят
И надо далее сгенерировать при добавлении "товара": MOSAU11A00
Или найти MOSAU1111B ,т.е. найти свободные или создать новые...
Причем это возможно и паралельно , т.е. надо исключить при генерации возможность создания на два товара одинаковых номеров.
Что вы посоветуете по реализации данной задачи?
Моя идея:
блокировать таблицу на чтение (чтобы параллельно не выполнялось то же самое), получить которые свободны и установить флаг в занято и освободить таблицу, и если таких не найдено получать все, которые есть (а там их может быть очень много), и пытаться на стороне PHP придумать следующий.