Вы все еще можете использовать целое число в качестве идентификатора, но иметь поле ref порядка (которое все еще может быть проиндексировано в базе данных), как вы описали. Я не думаю, что это проблема безопасности, я думаю, это может быть немного похоже на причину, по которой мой первый выставленный счет НЕ был номером 0001
. Люди обычно не хотят рекламировать тот факт, что они только начали.
Сказав все это, я могу дать вам фрагмент кода для генерации, казалось бы, случайного буквенно-цифрового кода заказа произвольной длины, если хотите.
Вот код на C #: РЕДАКТИРОВАТЬ: Я добавил первую (ранее отсутствующую) строку кода!
static System.Random random = new Random();
int lengthOfOrderCode = 6; // Obviously put what you like here
char[] keys = "ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890".ToCharArray(); // and here. Doesn't need to be the entire alphabet and numbers...
var orderCode = GenerateOrderCode(keys, lengthOfOrderCode);
private static string GenerateOrderCode(char[] keys, int lengthOfOrderCode)
{
return Enumerable.Range(1, lengthOfOrderCode).Select(k => keys[random.Next(0, keys.Length - 1)]).Aggregate("", (a, b) => a + b);
}