Ok, wiem, że już to robiłem. Ale nie mogę tego zrozumieć. Stworzyłem stół. Jedna z kolumn ma identyfikator „LogID”, jest także kluczem podstawowym.
Jak to zmienić, aby ta kolumna generowała identyfikator UUID dla każdego nowego wpisu?
Dzięki
Ok, wiem, że już to robiłem. Ale nie mogę tego zrozumieć. Stworzyłem stół. Jedna z kolumn ma identyfikator „LogID”, jest także kluczem podstawowym.
Jak to zmienić, aby ta kolumna generowała identyfikator UUID dla każdego nowego wpisu?
Dzięki
Odpowiedzi:
Wystarczy utworzyć wyzwalacz do uruchomienia przed wstawieniem, aby wygenerować identyfikator UUID dla danej kolumny.
CREATE TRIGGER before_insert_mytable
BEFORE INSERT ON mytable
FOR EACH ROW
SET new.LogID = uuid();
Wyrażenie UUID () generuje UUID po wywołaniu.
Niestety (w każdym razie AFAIK) MySQL nie zezwala na wyrażenia jako wartość domyślną dla pola. Aby obejść ten problem, zawsze można ustawić pole na wartość domyślną null i mieć wyzwalacz, który aktualizuje pole o UUID przy wstawianiu.
Jestem prawie pewien, że tak naprawdę nie możesz . Poważnie zastanowiłbym się nad niestosowaniem UUID jako klucza podstawowego, zamiast używania cieńszego, ładniejszego typu danych INT. Możesz dodać swój UUID jako osobną kolumnę i zaktualizować go za pomocą a TRIGGER, jeśli ci to odpowiada.
SELECT LENGTH(UNHEX(REPLACE(UUID(),'-','')))= 16 bajtów binarnych. Wciąż większy niż, INTale znacznie lepszy niżVARCHAR(36)
Właśnie zdecydowałem się dołączyć polecenie UUID () do wstawki z mojej aplikacji.
Dziękuje wszystkim.