While working with Join Tables in Connect CDC, one thing confused me at first. Updates in a join table don’t trigger replication.
It feels counterintuitive. If a join table is enriching your data, it seems like its changes should flow downstream too. But that’s not how CDC works.
How CDC actually works
CDC is event-driven, not relationship-driven.
It tracks changes on one table only - the source or trigger table.
Join tables are not part of capture. They are only used later in the flow.
The internal flow looks like this:
- Capture listens only to source table changes
- Data is queued
- Join logic runs during prepare or apply
By the time joins are evaluated, the capture step is already done. So join tables are never in a position to trigger replication.
What this means in practice
If your join table changes:
- No replication is triggered
- No updates are sent downstream
- Nothing happens until the source table changes again
A simple example:
- Employee is the source table
- Address is used as a join table
If Employee updates, data flows with enriched values.
If Address updates, nothing moves.
Why it is designed this way
This design keeps CDC predictable and scalable.
If join tables triggered replication:
- A single lookup change could fan out to thousands or millions of rows
- There would be no clear transaction boundary
- Consistency would become hard to guarantee
So CDC keeps it simple. Replication is always tied to source table events.
The hidden impact
This creates a subtle issue.
If your join table changes frequently, your target data can become stale without it being obvious. The enrichment looks correct, but it may not reflect the latest lookup values.
What changed for me
I stopped thinking of CDC as moving “connected data.”
It actually moves events. The joins just decorate those events at the time they are processed.
Takeaway
Join Tables are powerful for enrichment, but they are not drivers of replication.
Once I understood that, it became much easier to explain stale data scenarios and design around them.
Have you run into cases where lookup or reference data changed but the target didn’t update?
*Precisely Software Inc.