外部GUID,以满足MySQL中的唯一约束

时间:2019-05-22 12:11:46

标签: mysql database database-design

我有一个MYSQL 8.x表,每行都是唯一的,因为PK是自动递增的。列transactionID用于存储需要与行/记录耦合的外部transactionID。

但是有一个新的要求,我们想用相同的transactionID创建一个新行。我正在考虑添加一个新列来保存事务的GUID。

这是个好主意吗?这会很慢吗?关于uuid作为字符串还有其他思想吗? MySQL 8.0添加了可以将UUID存储为数字的UUID_TO_BIN和BIN_TO_UUID函数。

CREATE TABLE `testme`.`new_table` (
  `ID` INT NOT NULL AUTO_INCREMENT,
  `transactionID` INT NOT NULL,
  `maybe_uuid` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`ID`));

ALTER TABLE `testme`.`new_table` 
ADD UNIQUE INDEX `index2` (`transactionID` ASC, `maybe_uuid` ASC) VISIBLE;
;

1 个答案:

答案 0 :(得分:0)

由于很多原因,GUID都不适合用作主键,我在这里将不做详细介绍,而使用已经存在的auto_increment键会更快。但是,如果您还需要存储GUID,则为此添加另一列是完全合理的。您可以使用您提到的两个功能。