А где у Вас контроль успешности операции? не успешности выполнения программы, не успешность выполнения запроса, а именно выполнение операции запроса? Ведь иногда выполнение запроса с "нулевым" результатом - это не ошибка, а штатное событие...
Включите General Log и отсмотрите по проблемным транзакциям, какие именно запросы поступали на сервер MySQL.
Поле автоинкремента не требует наличия выражения по умолчанию.
Я бы даже сказал - не допускает, ибо приведёт к ошибке "Invalid default value for column 'id'".
IceNix, это выражение считает количество уникальных id_param для заданного param_table и проверяет, что оно равно количеству значений в списке (т.е. что каждое значение из списка присутствуент хотя бы в одном экземпляре).
Лентюй, а что там монструозного-то? Особенно если сервер восьмой версии.. особенно если выяснится, что надо связывать по отдельному значению, а не извлекать его.
Включите General Log и отсмотрите по проблемным транзакциям, какие именно запросы поступали на сервер MySQL.