Learn SQL/Advanced/Transactions/Understanding Transaction Boundaries

Understanding Transaction Boundaries

Understanding Transaction Boundaries helps analysts define which statements succeed or fail together between BEGIN and COMMIT or ROLLBACK.

What & Why

The Understanding Transaction Boundaries pattern is used to define which statements succeed or fail together between BEGIN and COMMIT or ROLLBACK. This keeps the SQL aligned with one concrete business question and makes the result grain explicit before the query is reused.

See How It Works

BUSINESS QUESTION

Marketing wants one stable pre-transaction snapshot before campaign and lead changes are treated as a single unit.

idnamechannelspendstart_dateend_datestatustarget_segment
1Spring Launchgoogle_ads55000.002024-01-152024-03-31activesmb
2Retention Webinaremail45000.002024-02-102024-04-15activeenterprise
3Finance Retargetinglinkedin50000.002024-03-122024-05-31activeenterprise
4Enterprise Searchgoogle_ads60000.002024-04-012024-06-30activeenterprise
idcampaign_idemailcreated_atqualified_atconverted_atlead_scoresourcecountry
3011ana@example.com2024-01-21 09:10:00+002024-01-22 11:00:00+002024-02-02 10:00:00+0086google_adsUS
3021ben@example.com2024-01-24 12:40:00+00NULLNULL52google_adsCA
3032chloe@example.com2024-02-16 08:30:00+002024-02-18 14:20:00+00NULL74emailGB
3043dev@example.com2024-03-20 17:15:00+002024-03-21 09:00:00+002024-04-04 16:00:00+0091linkedinUS
EXAMPLE QUERY
-- BEGIN; starts the boundary. COMMIT; keeps all work; ROLLBACK; keeps none.
SELECT
  TIMESTAMPTZ '2024-04-30 00:00:00+00' AS snapshot_at,
  (SELECT COUNT(*) FROM marketing.campaigns) AS campaign_count,
  (SELECT COUNT(*) FROM marketing.leads) AS lead_count;
RESULT — fixed transaction-boundary snapshot
snapshot_atcampaign_countlead_count
2024-04-30 00:00:00+0044

The explicit timestamp and both fixture counts make this transaction-boundary example fully deterministic.

This lesson's practice is part of Pro.

Advanced business practice

Sign up free to try it on a real business scenario