Every transactional system must answer one question:

If the same request arrives twice, will the database contain one record or two?

Duplicate requests happen for many reasons — and a double-click is only the most visible one:

Double-clicks on a save button

Browser retries after a timeout