mysql修改字段默认值为uuid()_MySQL中使⽤uuid作为字
段默认值
UUID 基于 16 进制,由 32 位⼩写的 16 进制数字组成,如下:
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
MySQL 实现了 UUID,并且提供 UUID() 函数⽅便⽤户⽣成 UUID。在 MySQL 的 UUID() 函数中,前三组数字从时间戳中⽣成,第四组数字暂时保持时间戳的唯⼀性,第五组数字是⼀个 IEEE 802 节点标点值,保证空间唯⼀。使⽤ UUID() 函数,可以⽣成时间、空间上都独⼀⽆⼆的值。据说只要是使⽤了 UUID,都不可能看到两个重复的 UUID 值。当然,这个只是在理论情况下。
UUID 是 32 位,因为 MySQL ⽣成的 UUID 有四个中划线,所以在 utf8 字符集⾥,长度为 36 位。
在 MySQL 中创建表的时候,⽆法在默认值中设置UUID函数,实际上其它函数除TIMESTAMP之外都不可以。
所以,只能⽤触发器来实现。
⾸先,创建⼀个表:CREATE TABLE `test` (
`uuid` varchar(36) NOT NULL,
`content` varchar(200) DEFAULT NULL,
PRIMARY KEY (`uuid`)
)
然后,创建⼀个触发器:DELIMITER $$
CREATE
TRIGGER `sddci`.`test` BEFORE INSERT
ON `sddci`.`test`
FOR EACH ROW BEGIN
IF new.uuid='' OR new.uuid IS NULL THEN
SET new.uuid = UUID();
END IF;
END$$
好了,测试⼀下触发器⼯作是否正常:INSERT INTO `test` (content) VALUES ('');
SELECT * FROM `test`;
结果出来了:uuidcontent
完成
但是,MySQL 会返回⼀个警告:1 queries executed, 1 success, 0 errors, 1 warnings
查询:insert into `test` (content) values ('')
共 1 ⾏受到影响, 1 个警告
执⾏耗时  : 0.025 sec
mysql下载32位传送时间  : 0 sec

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。