feat:crm_data_syncの新規作成

This commit is contained in:
y-ono-r 2022-08-01 20:02:29 +09:00 committed by shimoda.m@nds-tyo.co.jp
parent 0d7d66ebe4
commit 885fa7d274

View File

@ -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