@Muvka

Как обойти проблему создания одинаковых кодов?

Дорабатываю магазин на OpenCart. При отправке формы клиентом, в БД должен создаваться промокод вида ААА-0001 и т.д. по порядку. Скажите, лучше хранить в опциях последний код или лучше делая запрос к таблице с кодами и узнать номер у последнего кода? И главное, как сделать так, чтобы одинаковых кодов не могло появиться? Ведь есть такая возможность? Или нет?
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dimuska139
Backend developer
Формируй этот код на основании первичного ключа таблицы. То есть юзер отправил форму, ты сделал запись в БД, получил ее ID. И формируешь промокод на основании этого ID. ID в рамках таблицы уникален, поэтому и прокод твой будет уникальным. Можешь этот промокод формировать не в PHP, а в базе триггер повесить на событие вставки. Но советую все же это делать в коде, потому что так тестами можно покрыть.
Ответ написан
Комментировать
@immelnikoff
Изучаю БД
промокод вида ААА-0001

Если первые три символа статичны и меняется только числовая часть, то просто делаете новую таблицу:
CREATE TABLE promocode(
id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES user (id)
);

Теперь при
INSERT INTO promocode (user_id) value (1);
в поле id будет автоматически генерироваться уникальное целое число, которое можно использовать в качестве промокода.
ps. Думаю, что данную генерацию уникальных промокодов лучше реализовать именно на стороне БД, так как в этом случае вы точно гарантируете уникальность промокода для каждого юзера.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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