私はSOを検索しましたが、これに似た別の投稿が1つ見つかりました。フォローアップだと思ったものをフォローしましたが、まだ問題が発生しています。
また、MySQL のマニュアルも調べましたが、ここにあるものは正しいようです。
DELIMITER $$
CREATE DEFINER=`perimUser`@`localhost` PROCEDURE `assignLOBId`()
BEGIN
declare id, done INT default 0;
declare name VarChar(45);
declare lobCursor Cursor for Select idLineOfBusiness as id, name from LineOfBusiness;
declare continue handler for not found set done = 1;
OPEN lobCursor;
my_loop: LOOP
FETCH lobCursor INTO id, name;
IF done = 1 THEN
CLOSE lobCursor;
LEAVE my_loop;
END IF;
insert into test values (id, name);
UPDATE medium set idLOB = id where LOB = name;
UPDATE low set idLOB = id where LOB = name;
End LOOP my_loop;
END
カーソルに使用しているクエリを実行したところ、13 行が返されました。中程度のテーブルと低めのテーブルは、それぞれ約 600 行のデータでいっぱいです。LOB は、それぞれの LOB 列の値と一致します。使用された値基幹業務にあるものを作成するために、ミディアムとローから生成されました。
ここでの目標は、このパターンを何度も使用して、データを中位および低位で正規化することです。それ以外の場合は、ショートカットを使用して、一連の手動更新ステートメントを作成します。