Skip to main content
Destination delivery is Upsert-only, so deleted source rows are not removed automatically. For CDC, deletes and truncates apply only to destinations whose key is the source key and whose model reads only that stream. Soft delete needs a boolean _arcyria_deleted column. MongoDB destinations support hard delete only. See PostgreSQL CDC setup.

Delete detection

Delete detection is off by default. When you enable it on an Incremental stream, a successful run checks on a schedule (every 24 hours by default) whether each destination key still exists in the source. Destination rows whose key is missing are then:
  • Soft delete: marked with _arcyria_deleted = true, plus _arcyria_deleted_at if that column exists. The destination table must have a boolean _arcyria_deleted column. If the key returns to the source, the flag is cleared.
  • Hard delete: removed from the destination table.
Requirements:
  • the stream has a primary key;
  • the destination Upsert key is the same columns as the source primary key;
  • the destination model reads only that stream; and
  • the destination is PostgreSQL, MySQL, or MongoDB (hard delete only).
For a MongoDB source, the key is _id, so the destination key must be _id. Destinations that do not meet these requirements are skipped and the run records the reason. Arcyria refuses a check that would remove more than half of a destination’s rows, because that usually means the source is wrong or empty. Delete detection never fails a run.