MySQL - 自动增加到guid

时间:2011-03-08 09:33:51

标签: mysql guid auto-increment

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

+------------+-------------------------------------+
| company_id | name                                |
+------------+-------------------------------------+
|          1 | International Client                |
|          2 | Oracle                              |
|          3 | test                                |
|          4 | testabc                             |
|          5 | testdef                             |
|          6 | abcd                                |
+------------+-------------------------------------+

我想使用

uuid()
函数将ID列更新为GUID。

此外,如何更新对正确GUID的外键引用?

3 个答案:

答案 0 :(得分:7)

使用触发器。

CREATE TABLE `tbl_test` (
  `GUID` char(40) NOT NULL,
  `Name` varchar(50) NOT NULL,
  PRIMARY KEY (`GUID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

table和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...');

的问候, /吨

答案 1 :(得分:3)

你不能将它与自动增量一起使用

guid是char not intger

你需要自己插入

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

insert into table_name (id,name) values (uuid(),'jon');

答案 2 :(得分:0)

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

对于没有破折号的 UUID:

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

对于带破折号的 UUID:

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

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

相关问题