Я уверен, что это называется тем, что я не знаю имени.
Я хочу создать идентификаторы вроде:
59AA307E-94C8-47D1-AA50-AAA7500F5B54
вместо стандартного автоматически увеличиваемого числа.
Он не обязательно должен быть таким, но для него требуется длинное уникальное строковое значение.
Есть ли простой способ сделать это?
Я хочу сделать это, чтобы ссылаться на вложения, чтобы они не были легко использованы, например attachment = 1
Я знаю, что есть способы обойти это, но я считаю, что идентификатор строки будет лучше, если это возможно, и я уверен, что я просто не искал правильную вещь.
Спасибо
В прошлый раз, когда я проверил, вы не можете указать UUID() как ограничение по умолчанию для столбца в MySQL. Это означает использование триггера:
CREATE TRIGGER
newid
BEFORE INSERT ON your_table_name
FOR EACH ROW
SET NEW.id = UUID()
Я знаю, что есть способы обойти это, но я считаю, что идентификатор на основе строки будет лучше
Я понимаю, что вы после безопасности по неизвестности, но имейте в виду, что столбцы CHAR/VARCHAR больше 4 символов занимают больше места, чем INT (1 байт). Это будет влиять на производительность при поиске и JOINs.
Вы всегда можете просто передавать регулярные значения auto_increment через SHA1() или MD5() всякий раз, когда приходит время отправить его в "общедоступную". С приличной строкой соления до/после значения идентификатора было бы почти невозможно догадаться, что такое исходный номер. Вы бы не получили фантазийную строку, такую как UUID, но у вас все равно было бы правильное значение идентификатора целого числа, чтобы иметь дело с внутренним.
Если вас беспокоит дополнительное время процессора, связанное с повторным хешированием столбца, вы всегда можете сохранить значение хэша в отдельном поле при создании записи.