From 9b8076451f14b1ec07d5751d47cb79bbc1b709db Mon Sep 17 00:00:00 2001 From: y-ono-r <95060536+y-ono-r@users.noreply.github.com> Date: Fri, 22 Jul 2022 15:56:43 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:crm=5Fdata=5Fsync=E3=81=AE=E6=96=B0?= =?UTF-8?q?=E8=A6=8F=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rds_mysql/stored_procedure/crm_data_sync.sql | 41 ++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 rds_mysql/stored_procedure/crm_data_sync.sql diff --git a/rds_mysql/stored_procedure/crm_data_sync.sql b/rds_mysql/stored_procedure/crm_data_sync.sql new file mode 100644 index 00000000..c039a18a --- /dev/null +++ b/rds_mysql/stored_procedure/crm_data_sync.sql @@ -0,0 +1,41 @@ +-- A5M2で実行時にSQL区切り文字を「;」以外にすること +-- $$から始まる文字は後からREPLACEする文字を示す独自ルール +-- crm_data_syncストアドプロシージャは、同一セッション内での並列処理を実行することができない +CREATE PROCEDURE crm_data_sync(target_table VARCHAR(255), target_table_all VARCHAR(255), target_column VARCHAR(255)) +BEGIN + -- 例外処理 + -- エラーが発生した場合に一時テーブルの削除を実施 + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 + @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; + ROLLBACK; + SIGNAL SQLSTATE '45000' + SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg; + END; + + SET @error_state = NULL, @error_msg = NULL; + START TRANSACTION; + + -- ①-1 Salesforce側で物理削除されたデータを検出し更新する + SET @update_end_datetime = ' + UPDATE $$target_table$$ tt + LEFT JOIN $$target_table_all$$ tta + ON tt.id = tta.id + AND tt.$$target_column$$ = tta.$$target_column$$ + SET + tt.end_datetime = CURRENT_TIMESTAMP() + , tt.upd_user = CURRENT_USER() + , tt.upd_date = CURRENT_TIMESTAMP() + WHERE + tta.id IS NULL + AND tt.end_datetime = "9999-12-31 00:00:00" + '; + SET @update_end_datetime = REPLACE(@update_end_datetime, "$$target_table$$", target_table); + SET @update_end_datetime = REPLACE(@update_end_datetime, "$$target_table_all$$", target_table_all); + SET @update_end_datetime = REPLACE(@update_end_datetime, "$$target_column$$", target_column); + PREPARE update_end_datetime_stmt from @update_end_datetime; + EXECUTE update_end_datetime_stmt; + + COMMIT; +END \ No newline at end of file From af957662e92dda984f4930715afd0c3989694f18 Mon Sep 17 00:00:00 2001 From: y-ono-r <95060536+y-ono-r@users.noreply.github.com> Date: Fri, 22 Jul 2022 15:58:11 +0900 Subject: [PATCH 2/4] =?UTF-8?q?Revert=20"feat:crm=5Fdata=5Fsync=E3=81=AE?= =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 9b8076451f14b1ec07d5751d47cb79bbc1b709db. --- rds_mysql/stored_procedure/crm_data_sync.sql | 41 -------------------- 1 file changed, 41 deletions(-) delete mode 100644 rds_mysql/stored_procedure/crm_data_sync.sql diff --git a/rds_mysql/stored_procedure/crm_data_sync.sql b/rds_mysql/stored_procedure/crm_data_sync.sql deleted file mode 100644 index c039a18a..00000000 --- a/rds_mysql/stored_procedure/crm_data_sync.sql +++ /dev/null @@ -1,41 +0,0 @@ --- A5M2で実行時にSQL区切り文字を「;」以外にすること --- $$から始まる文字は後からREPLACEする文字を示す独自ルール --- crm_data_syncストアドプロシージャは、同一セッション内での並列処理を実行することができない -CREATE PROCEDURE crm_data_sync(target_table VARCHAR(255), target_table_all VARCHAR(255), target_column VARCHAR(255)) -BEGIN - -- 例外処理 - -- エラーが発生した場合に一時テーブルの削除を実施 - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - GET DIAGNOSTICS CONDITION 1 - @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; - ROLLBACK; - SIGNAL SQLSTATE '45000' - SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg; - END; - - SET @error_state = NULL, @error_msg = NULL; - START TRANSACTION; - - -- ①-1 Salesforce側で物理削除されたデータを検出し更新する - SET @update_end_datetime = ' - UPDATE $$target_table$$ tt - LEFT JOIN $$target_table_all$$ tta - ON tt.id = tta.id - AND tt.$$target_column$$ = tta.$$target_column$$ - SET - tt.end_datetime = CURRENT_TIMESTAMP() - , tt.upd_user = CURRENT_USER() - , tt.upd_date = CURRENT_TIMESTAMP() - WHERE - tta.id IS NULL - AND tt.end_datetime = "9999-12-31 00:00:00" - '; - SET @update_end_datetime = REPLACE(@update_end_datetime, "$$target_table$$", target_table); - SET @update_end_datetime = REPLACE(@update_end_datetime, "$$target_table_all$$", target_table_all); - SET @update_end_datetime = REPLACE(@update_end_datetime, "$$target_column$$", target_column); - PREPARE update_end_datetime_stmt from @update_end_datetime; - EXECUTE update_end_datetime_stmt; - - COMMIT; -END \ No newline at end of file From 8f65e0f87f56643efcf0a027b09f5d22b1ad75c6 Mon Sep 17 00:00:00 2001 From: y-ono-r <95060536+y-ono-r@users.noreply.github.com> Date: Mon, 25 Jul 2022 15:07:41 +0900 Subject: [PATCH 3/4] =?UTF-8?q?refactor:=E2=91=A1-2=E5=86=85=E9=83=A8?= =?UTF-8?q?=E7=B5=90=E5=90=88=E3=81=AB=E5=A4=89=E6=9B=B4=E3=81=97Where?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rds_mysql/stored_procedure/crm_history.sql | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rds_mysql/stored_procedure/crm_history.sql b/rds_mysql/stored_procedure/crm_history.sql index b60e2681..366cde70 100644 --- a/rds_mysql/stored_procedure/crm_history.sql +++ b/rds_mysql/stored_procedure/crm_history.sql @@ -70,15 +70,13 @@ BEGIN -- ②-2 「②-1」で取得した全件に更新処理を行う SET @update_end_datetime = ' UPDATE $$target_table$$ tt - LEFT JOIN $$target_table$$_make_history_tmp mht + JOIN $$target_table$$_make_history_tmp mht ON tt.id = mht.id AND tt.start_datetime = mht.min_start_datetime SET end_datetime = mht.max_start_datetime - INTERVAL 1 SECOND , upd_user = CURRENT_USER() , upd_date = CURRENT_TIMESTAMP() - WHERE - mht.id IS NOT NULL '; SET @update_end_datetime = REPLACE(@update_end_datetime, "$$target_table$$", target_table); SET @update_end_datetime = REPLACE(@update_end_datetime, "$$target_column$$", target_column); From d04af5c6443d8a1b61168f700e202ea4fbbb6f74 Mon Sep 17 00:00:00 2001 From: y-ono-r <95060536+y-ono-r@users.noreply.github.com> Date: Tue, 26 Jul 2022 11:29:00 +0900 Subject: [PATCH 4/4] =?UTF-8?q?refactor:INNER=E3=82=92=E6=98=8E=E7=A4=BA?= =?UTF-8?q?=E7=9A=84=E3=81=AB=E8=A8=98=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rds_mysql/stored_procedure/crm_history.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rds_mysql/stored_procedure/crm_history.sql b/rds_mysql/stored_procedure/crm_history.sql index 366cde70..10bb0095 100644 --- a/rds_mysql/stored_procedure/crm_history.sql +++ b/rds_mysql/stored_procedure/crm_history.sql @@ -70,7 +70,7 @@ BEGIN -- ②-2 「②-1」で取得した全件に更新処理を行う SET @update_end_datetime = ' UPDATE $$target_table$$ tt - JOIN $$target_table$$_make_history_tmp mht + INNER JOIN $$target_table$$_make_history_tmp mht ON tt.id = mht.id AND tt.start_datetime = mht.min_start_datetime SET