MySQL-自动递增到guid
我有一个带有自动递增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()MySQL-自动递增到guid,mysql,guid,auto-increment,Mysql,Guid,Auto Increment,我有一个带有自动递增ID字段的表,如下所示 +------------+-------------------------------------+ | company_id | name | +------------+-------------------------------------+ | 1 | International Client | | 2 | O
此外,如何将外键引用更新为正确的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: