MySQL-自动递增到guid

MySQL-自动递增到guid,mysql,guid,auto-increment,Mysql,Guid,Auto Increment,我有一个带有自动递增ID字段的表,如下所示 +------------+-------------------------------------+ | company_id | name | +------------+-------------------------------------+ | 1 | International Client | | 2 | O

我有一个带有自动递增ID字段的表,如下所示

+------------+-------------------------------------+ | company_id | name | +------------+-------------------------------------+ | 1 | International Client | | 2 | Oracle | | 3 | test | | 4 | testabc | | 5 | testdef | | 6 | abcd | +------------+-------------------------------------+ +------------+-------------------------------------+ |公司名称| +------------+-------------------------------------+ |1 |国际客户| |2 |甲骨文| |3 |试验| |4 | testabc| |5 |测试定义| |6 | abcd| +------------+-------------------------------------+ 我想使用uuid()函数将ID列更新为GUID

uuid()
此外,如何将外键引用更新为正确的GUID?

您不能将其与autoincrement一起使用

guid是char而不是intger

你需要自己插入它

您还需要将id更改为char(40)

使用触发器

CREATE TABLE `tbl_test` (
  `GUID` char(40) NOT NULL,
  `Name` varchar(50) NOT NULL,
  PRIMARY KEY (`GUID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
表和pk,现在触发

DELIMITER //
CREATE TRIGGER `t_GUID` BEFORE INSERT ON `tbl_test`
 FOR EACH ROW begin
 SET new.GUID = uuid();
end//
DELIMITER ;
现在试试看

insert into tbl_test(Name) value('trigger happy...');
问候,, /t

在mysql 8.0中,您可以使用如下内容:

对于不带破折号的UUID:

create table temp (`company_id` VARCHAR(64) NOT NULL DEFAULT (REPLACE(UUID(),'-','')), 'name' varchar(100) NOT NULL);
create table temp (`company_id` VARCHAR(64) NOT NULL DEFAULT (UUID()), 'name' varchar(100) NOT NULL);
对于带破折号的UUID:

create table temp (`company_id` VARCHAR(64) NOT NULL DEFAULT (REPLACE(UUID(),'-','')), 'name' varchar(100) NOT NULL);
create table temp (`company_id` VARCHAR(64) NOT NULL DEFAULT (UUID()), 'name' varchar(100) NOT NULL);

我希望这能回答您的问题,如果不是或者您需要更多,请告诉我。

没关系。但是有一些表的外键是
GUID
。当主表更新时,我如何更新它们?(主表=PK?)为什么要在设置后更改PK?如果您希望为“创建数据”添加自动时间/日期戳,则在GUID行之后添加此行是有效的:
Created
timestamp NOT NULL默认当前时间戳,@Teson-对我不起作用。所有记录都是用相同的GUID创建的。@DuckDucking,听起来很奇怪。Quick google表示您可能会遇到一个bug: