Замена последовательности на случайное число

Я хотел бы заменить некоторые последовательности, которые я использую для идентификаторов в моей базе данных postgresql, на свой собственный генератор идентификаторов. Генератор выдаст случайное число с контрольной цифрой в конце. Итак, это:

SELECT nextval('customers')

будет заменено что-то вроде этого:

SELECT get_new_rand_id('customer')

Функция будет затем возвращать числовое значение, такое как:[1-9][0-9]{9} где последняя цифра является контрольной суммой.

Проблемы у меня есть:

Как сделать вещь атомнойКак мне избежать возвращения одного и того же идентификатора дважды (это будет замечено при попытке вставить его в столбец с уникальным ограничением, но потом, думаю, будет слишком поздно)Это хорошая идея вообще?

Note1: Я не хочу использовать uuid, так как он должен сообщаться клиентам, и 10 цифр намного проще, чем 36-символьный uuid.

Заметка 2: Функция редко вызывается сSELECT get_new_rand_id() но будет назначено в качестве значения по умолчанию в столбце id вместоnextval().

РЕДАКТИРОВАТЬХорошо, хорошие обсуждения ниже! Вот некоторые объясненияПочему:

Так с чего бы мне переусердствовать? Цель состоит в том, чтобы скрыть первичный ключ от клиентов.

Я даю каждому новому клиенту уникальный идентификатор клиента (сгенерированный серийный номер в БД). Так как я сообщаю этот номер клиенту, мои конкуренты довольно просто отслеживают мой бизнес (есть и другие номера, такие как номер счета-фактуры и номер заказа, которые имеют одинаковые свойства). Именно этот мониторинг я хотел бы сделать немного сложнее (примечание: не невозможно, но сложнее).

Почему чек?

Прежде чем говорить о сокрытии серийного номера, я добавил контрольную цифру в ordernr, так как в некоторых моментах производства были неповоротливые пальцы, и я думал, что это будет хорошей практикой, которую следует придерживаться в будущем.

Прочитав обсуждение, я, безусловно, вижу, что мой подход - не лучший способ решения моей проблемы, но у меня нет другой хорошей идеи о том, как ее решить, поэтому, пожалуйста, помогите мне здесь.

Должен ли я добавить дополнительный столбец, в который я помещаю идентификатор, который я предоставляю клиенту, и сохраняю серийный номер в качестве первичного ключа?Как я могу сгенерировать идентификатор, чтобы его можно было показывать разумным и эффективным способом?Нужна ли контрольная цифра?