diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java index f806d5e637..2b232dce4f 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java @@ -3274,16 +3274,28 @@ public Data mapRow(Row row) { if (table != null && trigger != null) { List activeTriggerHistories = engine.getTriggerRouterService().getActiveTriggerHistories(); triggerHistory = new TriggerHistory(table, trigger, engine.getSymmetricDialect().getTriggerTemplate()); - triggerHistory.setTriggerHistoryId(triggerHistId); - triggerHistory.setLastTriggerBuildReason(TriggerReBuildReason.TRIGGER_HIST_MISSING); - triggerHistory.setNameForInsertTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.INSERT, - symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null)); - triggerHistory.setNameForUpdateTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.UPDATE, - symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null)); - triggerHistory.setNameForDeleteTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.DELETE, - symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null)); - log.warn("Could not find a trigger history row for the table {} for data_id {}. Generating a new trigger history row.", tableName, data.getDataId()); - engine.getTriggerRouterService().insert(triggerHistory); + boolean foundExisting = false; + for (TriggerHistory hist : activeTriggerHistories) { + if (hist.getTriggerId().equals(triggerHistory.getTriggerId()) && + hist.getFullyQualifiedSourceTableName().equalsIgnoreCase(triggerHistory.getFullyQualifiedSourceTableName())) { + foundExisting = true; + triggerHistory = hist; + break; + } + } + if (!foundExisting) { + triggerHistory.setTriggerHistoryId(triggerHistId); + triggerHistory.setLastTriggerBuildReason(TriggerReBuildReason.TRIGGER_HIST_MISSING); + triggerHistory.setNameForInsertTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.INSERT, + symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null)); + triggerHistory.setNameForUpdateTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.UPDATE, + symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null)); + triggerHistory.setNameForDeleteTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.DELETE, + symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null)); + log.warn("Could not find a trigger history row for the table {} for data_id {}. Generating a new trigger history row.", + tableName, data.getDataId()); + engine.getTriggerRouterService().insert(triggerHistory); + } } else { if (missingConfigTriggerHist == null) { missingConfigTriggerHist = new HashSet();