diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java index b22be656f3..08217cf19f 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java @@ -1202,7 +1202,7 @@ protected Set getTablesForTrigger(Trigger trigger, List triggers for (Table table : tableArray) { if (trigger.matches(table, platform.getDefaultCatalog(), platform.getDefaultSchema(), ignoreCase) - && !containsExactMatchForSourceTableName(table.getName(), triggers, + && !containsExactMatchForSourceTableName(table, triggers, ignoreCase) && !table.getName().toLowerCase().startsWith(tablePrefix)) { tables.add(table); @@ -1222,12 +1222,16 @@ protected Set
getTablesForTrigger(Trigger trigger, List triggers return tables; } - private boolean containsExactMatchForSourceTableName(String tableName, List triggers, + private boolean containsExactMatchForSourceTableName(Table table, List triggers, boolean ignoreCase) { for (Trigger trigger : triggers) { - if (trigger.getSourceTableName().equals(tableName)) { + String sourceCatalogName = trigger.getSourceCatalogName() != null ? trigger.getSourceCatalogName() : platform.getDefaultCatalog(); + String sourceSchemaName = trigger.getSourceSchemaName() != null ? trigger.getSourceSchemaName() : platform.getDefaultSchema(); + if (trigger.getSourceTableName().equals(table.getName()) + && sourceCatalogName.equals(table.getCatalog()) && sourceSchemaName.equals(table.getSchema())) { return true; - } else if (ignoreCase && trigger.getSourceTableName().equalsIgnoreCase(tableName)) { + } else if (ignoreCase && trigger.getSourceTableName().equalsIgnoreCase(table.getName()) + && sourceCatalogName.equalsIgnoreCase(table.getCatalog()) && sourceSchemaName.equalsIgnoreCase(table.getSchema())) { return true; } }