web-dev-qa-db-ja.com

Mysqlのuniqueidentifierの代わりは何ですか

Mysqlで実行したいSQLServerからのクエリがあります。しかし、SQLServerスクリプトからMYSQLスクリプトへのuniqueidentifierキーワードの代わりが見つかりません。

これがクエリです

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

上記の同じSQLServerスクリプトに対するMysqlのクエリは何になりますか?

15
jimmy
CREATE TABLE FOO (
myid CHAR(38) NOT NULL,
barid CHAR(38) NOT NULL
);

MSのWebサイトによると、GUIDの長さは38文字です。

15
N.B.

受け入れられた答えは、正確には間違っているではありませんが、やや不完全です。 GUID/UUIDを格納するためのよりスペース効率の良い方法は確かにあります。この質問をご覧ください: "MySQL GUID/UUIDの保存"

これは、UUID()によって生成されたMySQL GUID/UUIDをbinary(16)に変換するために思いついた最良の方法です。

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

そしてそれをBINARY(16)に格納します

GUID/UUIDのストレージスペースが主な懸念事項である場合、この方法は大幅な節約を実現します。

18
Joe Harris

MySQL Webサイトによると、これをVARCHAR(64)に一致させる必要があります。

UNIQUEIDENTIFIER,   VARCHAR(64)

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

3
Doolali

16バイトの値は16進数で32バイトとして表されることにも注意してください。 4つのダッシュと2つの中括弧を使用すると、この形式の38バイトが38バイトの文字列を持つSQLServerと互換性があります。例:{2DCBF868-56D7-4BED-B0F8-84555B4AD691}。

1
Oliver