我有一个 MYSQL 8.x 表,每一行都是唯一的,因为 PK 是自动递增的。列transactionID用于存储需要与行/记录耦合的外部transactionID。
但是出现了新的要求,我们希望创建具有相同 transactionID 的新行。我正在考虑添加一个新列来保存事务的 GUID。
这是个好主意吗?这会很慢吗?对于 uuid 作为字符串还有什么想法吗? MySQL 8.0添加了UUID_TO_BIN和BIN_TO_UUID函数,可以将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;
;
最佳答案
GUID 不太适合用作主键,原因有很多,我不会在这里详细说明,而且使用已经存在的 auto_increment 键会更快。但如果您还需要存储 GUID,那么为此添加另一列是完全合理的。您可以使用您提到的两个功能。
关于mysql - 外部GUID以满足mysql中的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56256524/