Гаразд, я знаю, що робив це раніше. Але я все життя не можу це зрозуміти. Я створив таблицю. Один із стовпців має позначку "LogID", це також первинний ключ.
Як змінити його, щоб цей стовпець генерував UUID для кожного нового запису?
Дякую
Гаразд, я знаю, що робив це раніше. Але я все життя не можу це зрозуміти. Я створив таблицю. Один із стовпців має позначку "LogID", це також первинний ключ.
Як змінити його, щоб цей стовпець генерував UUID для кожного нового запису?
Дякую
Відповіді:
Просто створіть тригер для запуску перед вставкою, щоб створити UUID для даного стовпця.
CREATE TRIGGER before_insert_mytable
BEFORE INSERT ON mytable
FOR EACH ROW
SET new.LogID = uuid();
UUID () вираз генерує UUID при виклику.
На жаль (все-таки AFAIK) MySQL не дозволить вирази як значення за замовчуванням для поля. Як обхід, ви завжди можете встановити поле за замовчуванням і мати тригер, який оновлює поле на UUID на вставці.
Я впевнений, що ви все ще не можете . Я б серйозно подумав не використовувати UUID в якості основного ключа, натомість використовувати більш тонкий, приємний тип даних, як-от INT
. Ви можете додати свій UUID як окремий стовпець та оновити його через TRIGGER
, якщо це вам підходить.
SELECT LENGTH(UNHEX(REPLACE(UUID(),'-','')))
= 16 байт двійкових. Ще більший за, INT
але набагато кращий заVARCHAR(36)
Щойно я вирішив включити команду UUID () до вставки зі своєї програми.
Дякую усім.