# Combining PostgreSQL Persistence and Transport When using [SQL persistence using the PostgreSQL dialect](/persistence/sql/dialect-postgresql.md) in combination with the [PostgreSQL transport](/transports/postgresql/index.md), the location of saga data depends both on whether the [outbox](/nservicebus/outbox/index.md) is enabled and on the transaction mode. ## Outbox disabled PostgreSQL Transport
TransactionMode | Connection sharing | Saga data location :-:|:-:|:-: SendsAtomicWithReceive | isolated transaction for send and receive | Transport DB ReceiveOnly | isolated transaction for receive | Transport DB None | No transactions | Persistence DB With the outbox disabled, the persistence uses the connection and transaction context established by the transport to access saga data. This behavior ensures *exactly-once* message processing, since the state change of a saga is committed atomically with the consumption of the message that caused it. ## Outbox enabled PostgreSQL Transport
TransactionMode | Connection sharing | Saga data location :-:|:-:|:-: SendsAtomicWithReceive | Not supported | N/A ReceiveOnly | via Transport storage context | Persistence DB None | Not supported | N/A