Ok, I know I've done this before. But I cannot for the life of me figure it out. I created a table. One of the columns is labled "LogID", it is also the primary key.
How do I alter it so that this column generates a UUID for each new entry?
Thanks
Just create a trigger to run before insert to generate the UUID for the given column.
CREATE TRIGGER before_insert_mytable BEFORE INSERT ON mytable FOR EACH ROW SET new.LogID = uuid(); The UUID() expression generates a UUID when called.
Unfortunately (AFAIK anyway) MySQL won't allow expressions as a default value for a field. As a work around, you could always set the field to default null and have a trigger that updates the field with a UUID on insert.
I'm pretty sure you still can't, actually. I would seriously consider not using a UUID as a primary key, instead using a slimmer, nicer data type like INT. You can add your UUID as a separate column and update it via a TRIGGER, if that suits you.
SELECT LENGTH(UNHEX(REPLACE(UUID(),'-',''))) = 16 bytes binary. Still bigger than INT but much better than VARCHAR(36) I just decided to include the UUID() command on the insert from my application.
Thanks all.