Я собираюсь добавить несколько советов по использованию триггера для этого. Да, это можно сделать с помощью триггера. (И, в отличие от Нила, я думаю, что это должно быть проблемой с базой данных, потому что все записи будут нуждаться в уникальности, а не только в том, что они добавлены через определенный интерфейс. Использование подобной логики в приложении - плохая идея с точки зрения целостности данных. Ata minumum make уверен, что поле имеет уникальный индекс.)
Тем не менее, большинство неопытных разработчиков триггеров считают, что триггеры работают с каждой строкой по отдельности и не спроектируют свой триггер для обработки вставок в несколько строк. Вы можете подумать, что нет многострочных вставок; Вы бы большую часть времени были неправы. В какой-то момент вы захотите импортировать группу клиентов, триггер должен быть в состоянии справиться с этим.
Теперь, используя ваш процесс, он может обрабатывать только одну запись за раз. Это огромный недостаток, потому что единственный способ обработать его в триггере - использовать курсор или цикл while. Это очень медленно и может привести к тому, что ваш клиентский стол будет заблокирован на несколько часов, если вам потребуется добавить сразу много клиентов.
Я думаю, что идея Ливена о создании пула возможных уникальных паролей является хорошей, потому что тогда вы можете использовать основанную на множестве логику в триггере для ее заполнения. Но для правильной работы вам понадобятся три столбца (например, поле идентификатора, которое можно использовать для захвата следующих 300 строк). Вы также должны запланировать ночную работу, чтобы генерировать больше потенциальных паролей, если число неиспользованных номеров меньше определенного процента. Таким образом, вещи никогда не потерпят неудачу, потому что у вас неожиданно закончились потенциальные пароли.