当前位置: 首页 > 面试题库 >

MySQL中的主键:INT(n)或UUID为varchar(36)

龙默
2023-03-14
问题内容

在MySQL中使用UUID作为主键有意义吗?

除了手动查询的麻烦之外,使用UUID代替常规INT的利弊是什么?


问题答案:

UUID的主要缺点是,如果您想在以后引用该记录以供进一步使用,则必须事先创建它们(即:在相关的外键表中添加子记录):

INSERT INTO table (uuidfield, someotherfield) VALUES (uuid(), 'test'));

不会让您看到新的UUID值是什么,并且由于您没有使用常规的auto_incremented主键,因此无法使用last_insert_id()它来检索它。您必须分两步进行:

SELECT @newuid := uuid();
INSERT INTO table (uuidfield, someotherfield) VALUES (@newuid, 'test');
INSERT INTO childtable ..... VALUES (@newuid, ....);


 类似资料:
  • 问题内容: 我需要一个简单的表,其中包含MySQL中的用户名和密码字段。由于用户名必须唯一,因此对我来说,将它们设置为主键是有意义的。 使用还是作为主键更好? 问题答案: 可能还只是使用用户ID索引,所以与vs / char / varchar相比,连接要快得多。如果您不小心扩展了架构的功能,那么现在添加所需的两秒钟时间可以为您节省很多时间。 要考虑的一些陷阱: 说我们在将来的日期添加一些表,如果

  • 问题内容: 我当前的数据 是 我已经尝试了所有四个查询,但都没有工作。(参考) 全部抛出语法错误,如下所示: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在第1行的’)AS INT FROM PRODUCT LIMIT 0,30’附近使用正确的语法 您的SQL语法有误;在第1行的“ INTEGER)FROM PRODUCT LIMIT 0,30”附近检查与您的MySQL服务器

  • 我得当前数据 是 我试过了所有的四个查询,没有一个奏效。(参考) 所有抛出的语法错误如下所示: 您的SQL语法有错误;查看与您的MySQL server版本相对应的手册,以了解在第1行使用“PRODUCT LIMIT 0,30”中的near')AS INT的正确语法 您的SQL语法有错误;查看与您的MySQL server版本相对应的手册,以了解在第1行“Integer)FROM PRODUCT

  • 我刚到Spring 我尝试使用spring rest api和Hibernate更新Mysql中的一个现有值。但它每次都会抛出一个错误。 错误消息:

  • 问题内容: 如果我使用ID nr:s代替VARCHARS作为外键会更好吗?最好使用VARCHARS的ID nr:s istead作为主键吗?ID nr是指INT! 这就是我现在所拥有的: 我可能已经想到了: 还是我在这里认为完全错误? 问题答案: VARCHAR用于任何KEY的问题在于它们可以保留WHITE SPACE。空格由任何无法在屏幕上读取的字符组成,例如空格标签,回车符等。当您开始追查为什

  • 问题内容: 我在下面的查询中,需要转换为 架构图 我尝试了什么 但它们不起作用。请提出建议。 问题答案: 您将需要或作为数据类型,没有可以将数据强制转换/转换为以下数据的数据类型: 请参阅下面的SQL(实际上)在SQL Fiddle中 : 除了您试图转换为不正确的数据类型外,您所使用的语法也不正确。该函数使用以下列或值: 要么 您的原始查询的语法向后。