A deadlock happens when two transactions wait on each other’s locks. Databases detect it and abort (rollback) one transaction so the other can continue. Apps should retry aborted transactions.