When a patron is deleted, any entries in borrower_password_recovery should be deleted as well by cascade. CREATE TABLE `borrower_password_recovery` ( `borrowernumber` int(11) NOT NULL, `uuid` varchar(128) COLLATE utf8_unicode_ci NOT NULL, `valid_until` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`borrowernumber`), KEY `borrowernumber` (`borrowernumber`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;