внешний GUID для удовлетворения уникального ограничения в MySQL - PullRequest
0 голосов
/ 22 мая 2019

У меня есть таблица MYSQL 8.x, каждая строка уникальна, поскольку PK автоматически увеличивается. Столбец ID транзакции используется для хранения внешнего идентификатора транзакции, который должен быть связан со строкой / записью.

Однако появилось новое требование, и мы хотим создать новую строку с тем же идентификатором транзакции. Я думал добавить новый столбец, который содержит 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;
;

1 Ответ

0 голосов
/ 22 мая 2019

GUID не подходят для использования в качестве первичного ключа по многим причинам, которые я не буду здесь подробно описывать, и было бы быстрее использовать уже установленный ключ auto_increment. Но если вам также нужно сохранить GUID, вполне разумно просто добавить еще один столбец для этого. И вы можете использовать две функции, которые вы упомянули.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...