在MySQL中使用UUID作为主键有意义吗?
除了手动查询的麻烦之外,使用UUID代替常规INT的利弊是什么?
UUID的主要缺点是,如果您想在以后引用该记录以供进一步使用,则必须事先创建它们(即:在相关的外键表中添加子记录):
INSERT INTO table (uuidfield, someotherfield) VALUES (uuid(), 'test'));
不会让您看到新的UUID值是什么,并且由于您没有使用常规的auto_incremented主键,因此无法使用last_insert_id()它来检索它。您必须分两步进行:
last_insert_id()
SELECT @newuid := uuid(); INSERT INTO table (uuidfield, someotherfield) VALUES (@newuid, 'test'); INSERT INTO childtable ..... VALUES (@newuid, ....);