Есть несколько вариантов
1) Вы можете использовать один UUID, ключ с 16 байтами (128 бит); эта стратегия работает и среди n серверов-баз данных:
выберите uuid (); (конечно .. вам понадобится поле CHAR (32) для хранения вашего UUID в виде обычного текста; MySQL некоторое время не имеет полей типа GUIID (128 бит))
Я одеваюсь, чтобы использовать сохраненную функцию, это одна из моих версий:
BEGIN
DECLARE str_uuid varchar(32);
DECLARE cur1 CURSOR FOR select replace (o.oid, '-', '') from (select lower(UUID()) as oid) as o;
open cur1;
fetch cur1 into str_uuid;
close cur1;
return str_uuid;
END
2) Вы можете использовать INT или BIGINT, но эта стратегия работает только на одном сервере базы данных:
Рассмотрим таблицу с полями my_last_id, dt_hr_id (my_last_id - AUTOINCREMENT)
Запускает одно изолированное соединение и
- INSERT INTO YourTable (dt_hr_id) значения (NOW ());
- SELECT LAS_INSERT_ID (); (SELECT в этом случае всегда будет работать, потому что происходит внутри соединения владельца)
Закрывает ваше изолированное соединение;
Это возможно делать внутри хранимых процедур / хранимых функций, но вам нужно знать, что MySQL не поддерживает несколько транзакций в одном соединении, поэтому вам нужно делать это внутри изолированного соединения.