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