Что является заменой для уникального идентификатора в Mysql - PullRequest
15 голосов
/ 18 ноября 2011

У меня есть запрос от SQL Server, который я хочу запустить в Mysql. но я не могу найти замену ключевого слова uniqueidentifier из сценария SQL Server в сценарий MYSQL.

Вот запрос

 CREATE TABLE foo(
  myid uniqueidentifier NOT NULL,
  barid uniqueidentifier NOT NULL
)

Каким будет запрос в Mysql для того же сценария SQL Server, приведенного выше?

Ответы [ 4 ]

18 голосов
/ 18 января 2012

Принятый ответ, хотя и не совсем неверный , несколько неполон.Конечно, есть более эффективные способы хранения GUID / UUID.Пожалуйста, взгляните на этот вопрос: «Хранение идентификаторов GUID / UUID MySQL»

Это лучший способ конвертировать MySQL.GUID / UUID, сгенерированный UUID () для двоичного файла (16):

UNHEX(REPLACE(UUID(),'-',''))

И затем сохранение его в двоичном коде (16)

Если место для хранения GUID /UUID - главная проблема, эта методика принесет значительную экономию.

15 голосов
/ 18 ноября 2011
CREATE TABLE FOO (
myid CHAR(38) NOT NULL,
barid CHAR(38) NOT NULL
);

По данным веб-сайта MS, GUID составляет 38 символов в длину.

3 голосов
/ 22 июля 2014

Согласно веб-сайту MySQL, вы должны сопоставить его с VARCHAR (64)

UNIQUEIDENTIFIER,   VARCHAR(64)

http://dev.mysql.com/doc/workbench/en/wb-migration-database-mssql-typemapping.html

1 голос
/ 22 февраля 2015

Помните также, что 16-байтовое значение представлено в шестнадцатеричном виде как 32 байта.С 4 штрихами и 2 фигурными скобками это дает нам 38 байтов в этом формате, совместимом с SQL Server, с 38-байтовой строкой.Например: {2DCBF868-56D7-4BED-B0F8-84555B4AD691}.

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