1. ホーム
  2. mysql

[解決済み] MySQLで既存データのGUIDを生成するには?

2022-09-03 03:13:15

質問

MySQL テーブルに大量のデータをインポートしたところ、列 "GUID"があり、基本的に既存のすべての行を新しい固有のランダムな GUID で埋めたいと考えています。

MySQL でこれを行うにはどうすればよいですか。

私は

UPDATE db.tablename
  SET columnID = UUID()
  where columnID is not null

そして、すべてのフィールドを同じにする

どのように解決するのですか?

最も簡単な方法かどうかは分かりませんが、うまくいきます。アイデアは、あなたに代わってすべての作業を行うトリガーを作成し、次に、テーブルを更新するクエリを実行し、最後にこのトリガーを削除することです。

delimiter //
create trigger beforeYourTableUpdate  BEFORE UPDATE on YourTable
FOR EACH ROW
BEGIN
  SET new.guid_column := (SELECT UUID());
END
//

次に

UPDATE YourTable set guid_column = (SELECT UUID());

そして DROP TRIGGER beforeYourTableUpdate ;

アップデイト トリガーを使用しない、プライマリキーまたはユニークインデックスを必要とする別の解決策 :

UPDATE YourTable,
INNER JOIN (SELECT unique_col, UUID() as new_id FROM YourTable) new_data 
ON (new_data.unique_col = YourTable.unique_col)
SET guid_column = new_data.new_id

アップデイト をもう一度実行してみてください。 元のクエリも動作するようです。 WHERE columnID is not null を必要としないので、すべての私の空想のコードは必要ありません。