は、私が余分なselect文は、私が挿入するたびに行われることを要求だけで、MySQLはキー独特の間のサーバーになるだろうUUID()
を経由して主キーを生成した印象などMySQL UUID主キー - PHPまたはMySQLによって生成されますか?
しかし、there is no way to fetch the last inserted UUID、下にありました。
PHPがMySQLと同じものを生成することは可能ですか?UUID()
?
は、私が余分なselect文は、私が挿入するたびに行われることを要求だけで、MySQLはキー独特の間のサーバーになるだろうUUID()
を経由して主キーを生成した印象などMySQL UUID主キー - PHPまたはMySQLによって生成されますか?
しかし、there is no way to fetch the last inserted UUID、下にありました。
PHPがMySQLと同じものを生成することは可能ですか?UUID()
?
いいえ、(完全に)乱数であるため、PHPにはMySQLとまったく同じUUID()
を生成させることはできません。
あなたの問題は、UUID()
をMySQLで使用するのが好きですが、新しいクエリを実行して、新しいUUID
が何であるか把握したくないということです。
なぜ、INSERT
クエリでプライマリキーとして使用されるUUID
をPHPで作成しないのですか? This comment on php.netこれを行う方法を示す必要があります。
使用して、これらのサンプル機能:
$uuid = UUID::v4();
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;
編集:UUID
秒の異なるタイプを生成、そのページ上のいくつかの方法があります。 v4
は疑似ランダムですが、別のバージョンを使用するか、独自のUUID
ジェネレータを作成することができます。
私は最初のステップを試しました:$ uuid = UUID :: v4();私のサーバーを掛けてしまったので、別の考え方が思い浮かびました。
クエリからデータを取得する$ sql1 = SELECT UUID()AS uuid; は、変数$のUUIDに
を格納し、
$のSQL = "MYTABLE(UUID、FOO)VALUES( '{$のUUID}'、 'バー')中に挿入します。" の下に使用します。 echo "UUIDは:"です。 $ uuid;
ええと、この方法を使うと、それがMySQLのユニークなuuidであるかどうか、それがサーバ間でユニークであるかどうかをチェックする必要があります。ユニークなチェックやユニークなチェックが必要ですか? – ina
ランダムに生成されたUUIDを使用すると、この問題は発生しません。統計的には、あなたが** 100億** UUID **を毎秒100秒**生成した場合、**わずか1つ**が衝突する確率はわずか50%です。 (出典:http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates)おそらく衝突は見られませんが、UUIDをMySQLの主キーにしてサーバーを定期的に同期させることは依然として賢明です。 –