Mysqlで実行したいSQLServerからのクエリがあります。しかし、SQLServerスクリプトからMYSQLスクリプトへのuniqueidentifier
キーワードの代わりが見つかりません。
これがクエリです
CREATE TABLE foo(
myid uniqueidentifier NOT NULL,
barid uniqueidentifier NOT NULL
)
上記の同じSQLServerスクリプトに対するMysqlのクエリは何になりますか?
CREATE TABLE FOO (
myid CHAR(38) NOT NULL,
barid CHAR(38) NOT NULL
);
MSのWebサイトによると、GUIDの長さは38文字です。
受け入れられた答えは、正確には間違っているではありませんが、やや不完全です。 GUID/UUIDを格納するためのよりスペース効率の良い方法は確かにあります。この質問をご覧ください: "MySQL GUID/UUIDの保存"
これは、UUID()によって生成されたMySQL GUID/UUIDをbinary(16)に変換するために思いついた最良の方法です。
UNHEX(REPLACE(UUID(),'-',''))
そしてそれをBINARY(16)に格納します
GUID/UUIDのストレージスペースが主な懸念事項である場合、この方法は大幅な節約を実現します。
MySQL Webサイトによると、これをVARCHAR(64)に一致させる必要があります。
UNIQUEIDENTIFIER, VARCHAR(64)
http://dev.mysql.com/doc/workbench/en/wb-migration-database-mssql-typemapping.html
16バイトの値は16進数で32バイトとして表されることにも注意してください。 4つのダッシュと2つの中括弧を使用すると、この形式の38バイトが38バイトの文字列を持つSQLServerと互換性があります。例:{2DCBF868-56D7-4BED-B0F8-84555B4AD691}。