генерировать идентификаторы mysql в виде строки вместо целого числа

0

Я уверен, что это называется тем, что я не знаю имени.

Я хочу создать идентификаторы вроде:

59AA307E-94C8-47D1-AA50-AAA7500F5B54 

вместо стандартного автоматически увеличиваемого числа.

Он не обязательно должен быть таким, но для него требуется длинное уникальное строковое значение.

Есть ли простой способ сделать это?

Я хочу сделать это, чтобы ссылаться на вложения, чтобы они не были легко использованы, например attachment = 1

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

Спасибо

Теги:
guid

2 ответа

3

В прошлый раз, когда я проверил, вы не можете указать UUID() как ограничение по умолчанию для столбца в MySQL. Это означает использование триггера:

CREATE TRIGGER
newid
BEFORE INSERT ON your_table_name
FOR EACH ROW
SET NEW.id = UUID()

Я знаю, что есть способы обойти это, но я считаю, что идентификатор на основе строки будет лучше

Я понимаю, что вы после безопасности по неизвестности, но имейте в виду, что столбцы CHAR/VARCHAR больше 4 символов занимают больше места, чем INT (1 байт). Это будет влиять на производительность при поиске и JOINs.

  • 0
    Не то чтобы я сказал это в вопросе, но я делаю это в рельсах, и для этого есть плагин для рельсов, спасибо за ваш ответ. Если бы я мог выбрать два ответа, я бы тоже выбрал ваш. jcomeau_ictx опередил вас с ответом на 1 минуту.
0

Вы всегда можете просто передавать регулярные значения auto_increment через SHA1() или MD5() всякий раз, когда приходит время отправить его в "общедоступную". С приличной строкой соления до/после значения идентификатора было бы почти невозможно догадаться, что такое исходный номер. Вы бы не получили фантазийную строку, такую ​​как UUID, но у вас все равно было бы правильное значение идентификатора целого числа, чтобы иметь дело с внутренним.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню