mysql中uniqueidentifier的替代品是什么?

时间:2011-11-18 09:06:36

标签: mysql sql-server uniqueidentifier

我有一个SQL Server的查询,我想在Mysql中运行。但我找不到uniqueidentifier关键字从SQL Server脚本到MYSQL脚本的替换。

这是查询

 CREATE TABLE foo(
  myid uniqueidentifier NOT NULL,
  barid uniqueidentifier NOT NULL
)

对于上面相同的SQL Server脚本,Mysql中的查询是什么?

4 个答案:

答案 0 :(得分:18)

接受的答案虽然不完全错误,但有点不完整。肯定有更多节省空间的方法来存储GUID / UUID。请看一下这个问题:"Storing MySQL GUID/UUIDs"

  

这是我将UUID()生成的MySQL GUID / UUID转换为二进制(16)的最佳方法:

UNHEX(REPLACE(UUID(),'-',''))
     

然后将其存储在BINARY(16)

如果GUID / UUID的存储空间是主要关注点,则此方法可以节省大量成本。

答案 1 :(得分:15)

CREATE TABLE FOO (
myid CHAR(38) NOT NULL,
barid CHAR(38) NOT NULL
);

根据MS网站的说法,GUID的长度为38个字符。

答案 2 :(得分:3)

根据MySQL网站,您应该将其与VARCHAR(64)

相匹配
UNIQUEIDENTIFIER,   VARCHAR(64)

http://dev.mysql.com/doc/workbench/en/wb-migration-database-mssql-typemapping.html

答案 3 :(得分:1)

还要记住16字节值以十六进制表示为32字节。使用4个破折号和2个花括号,可以获得这种格式的38个字节与SQL Server兼容,并带有38个字节的字符串。例如:{2DCBF868-56D7-4BED-B0F8-84555B4AD691}。