SQL (SQLite engine)

Test cascade delete behavior

Hard120 pts~45 min
  • ON DELETE CASCADE
  • Foreign keys
  • Orphan checks
Practice app · Acme Commerce DB

A real SQL database (SQLite engine) seeded with an e-commerce and HR dataset, with schema browser and query runner.

Test URL
/lab/database-testing-test-cascade-delete-behavior

Your starter code already declares TEST_URL — never hardcode a host.

Objective

Verify that deleting an order cascades to its order_items, and that orders with payments are protected.

Your task

  1. 1Delete the lowest-id cancelled order: DELETE FROM orders WHERE id = (SELECT MIN(id) FROM orders WHERE status = 'cancelled').
  2. 2Confirm its order_items disappeared with it (ON DELETE CASCADE).
  3. 3Try to delete the lowest-id delivered order; payments reference it without cascade, so it must fail.
  4. 4Verify no orphans: SELECT COUNT(*) AS orphan_items FROM order_items i LEFT JOIN orders o ON o.id = i.order_id WHERE o.id IS NULL returns 0.

Acceptance criteria

  • Exactly one cancelled order and its items were deleted
  • Deleting the delivered order fails with FOREIGN KEY constraint failed
  • The last result set shows 0 orphaned order_items

Constraints

  • Every run starts from a freshly seeded database, so your script must include its own setup statements.
  • A failing statement is recorded and the script keeps running, so you can trigger an error and verify afterwards.
  • Only the last result set of your script is compared, so finish with the verification query.

SQL (SQLite engine) · Database Testing · CRUD & data integrity