feat:crm_data_syncの新規作成
This commit is contained in:
parent
e1338c5af2
commit
4a73e14bbf
41
rds_mysql/stored_procedure/crm_data_sync.sql
Normal file
41
rds_mysql/stored_procedure/crm_data_sync.sql
Normal 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
|
||||||
Loading…
x
Reference in New Issue
Block a user