意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

mysql表中怎么将主键的类型设置为UUID

来源:恒创科技 编辑:恒创科技编辑部
2023-12-20 12:38:59


今天在改别人的一个代码中发现一个问题,要创建一个uuid类型的主键

CREATE TABLE `product` (
`id` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
`productNum` VARCHAR(50) NOT NULL,
`productName` VARCHAR(50) DEFAULT NULL,
`cityName` VARCHAR(50) DEFAULT NULL,
`DepartureTime` TIMESTAMP NULL DEFAULT NULL,
`productPrice` DECIMAL(10,0) DEFAULT NULL,
`productDesc` VARCHAR(255) DEFAULT NULL,
`productStatus` INT(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

想把上面表中的product中的id改成uuid类型的


mysql表中怎么将主键的类型设置为UUID

uuid

UUID含义是通用唯一识别码 (Universally Unique Identifier)uuid 项目应用 www.1b23.com,指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。换句话说能够在一定的范围内保证主键id的唯一性
mysql中直接使用uuid()函数,可以生成一个随机的uuid
正常的uuid是36位长度的,例如:d48644cc-2c7a-4714-9900-18ab99e80b03,其中有4个字符是”-“,在mysql中可以使用replace()函数来替换”-“

replace函数

默认生成的uuid含有’-’,我们可以使用replace函数替换掉’-’,SQL如下:

select replace(uuid(),"-","") as uuid;
百度后发现可以通过触发器来实现这一操作

在左侧创建一个触发器

mysql表中怎么将主键的类型设置为UUID_mysql


名为id_trigger

下面是触发器的代码

DELIMITER $$

CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER `ssm_project1`.`id_trigger` BEFORE INSERT
ON `ssm_project1`.`product`
FOR EACH ROW BEGIN
SET new.id=REPLACE(UUID(),'-','');
END$$

DELIMITER ;

该触发器实现的是在插入数据时生成一个唯一的uuid

运行项目后成功解决了

mysql表中怎么将主键的类型设置为UUID_主键_02


上一篇: CHARACTER SET utf8 COLLATE utf8_general_ci 下一篇: Linux云服务器上安装mysql5