refactor:一時テーブル名の変更、細かいミスの修正

This commit is contained in:
y-ono-r 2022-07-21 09:31:40 +09:00
parent e2609471ae
commit 611acb6a37

View File

@ -8,19 +8,19 @@ BEGIN
BEGIN
GET DIAGNOSTICS CONDITION 1
@error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT;
EXECUTE drop_tmp_table;
DEALLOCATE PREPARE drop_tmp_table;
EXECUTE drop_tmp_table_stmt;
DEALLOCATE PREPARE drop_tmp_table_stmt;
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = @error_msg, MYSQL_ERRNO = @error_state;
SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg;
END;
-- ②-3で利用する一時テーブル削除のSQLを準備
-- 例外処理でも利用するため先に記述
SET @drop_tmp_table = '
DROP TEMPORARY TABLE IF EXISTS make_history_tmp_$$target_table
DROP TEMPORARY TABLE IF EXISTS $$target_table_make_history_tmp
';
SET @drop_tmp_table = REPLACE(@drop_tmp_table, "$$target_table", target_table);
PREPARE new_history_save_stmt from @drop_tmp_table;
PREPARE drop_tmp_table_stmt from @drop_tmp_table;
-- ①-1 Salesforce側で更新されたデータの適用開始日時と適用終了日時を設定する
SET @new_history_save = '
@ -38,11 +38,11 @@ BEGIN
SET @new_history_save = REPLACE(@new_history_save, "$$target_column", target_column);
PREPARE new_history_save_stmt from @new_history_save;
EXECUTE new_history_save_stmt;
DEALLOCATE PREPARE ew_history_save_stmt;
DEALLOCATE PREPARE new_history_save_stmt;
-- ②-1 Salesforce側で更新されたデータを検出用一時テーブルの作成
SET @make_history_tmp_create = '
CREATE TEMPORARY TABLE make_history_tmp_$$target_table
CREATE TEMPORARY TABLE $$target_table_make_history_tmp
SELECT
id
, MIN($$target_column) AS min_start_datetime
@ -65,7 +65,7 @@ BEGIN
-- ②-2 「②-1」で取得した全件に更新処理を行う
SET @update_end_datetime = '
UPDATE $$target_table tt
LEFT JOIN make_history_tmp_$$target_table mht
LEFT JOIN $$target_table_make_history_tmp mht
ON tt.id = mht.id
AND tt.start_datetime = mht.min_start_datetime
SET
@ -82,7 +82,7 @@ BEGIN
DEALLOCATE PREPARE update_end_datetime_stmt;
-- ②-3 「②-1」で作成した一時テーブルを削除する
EXECUTE drop_tmp_table;
DEALLOCATE PREPARE drop_tmp_table;
EXECUTE drop_tmp_table_stmt;
DEALLOCATE PREPARE drop_tmp_table_stmt;
END