Я хочу написать процедуру, которая будет обрабатывать вставку данных в 2 таблицы. Если вставка должна завершиться неудачей, то вся процедура должна завершиться неудачей. Я пробовал это много разных способов и не могу заставить его работать. Я целенаправленно сделал свою вторую вставку неудачной, но данные все равно вставлены в первую таблицу.
Я попытался вложить выражения IF на основе строки, но даже при сбое данных во второй вставке данные все еще вставлены в первую таблицу. Я ищу общее количество 2 затронутых строк.
Может кто-нибудь, пожалуйста, покажите мне, как обращаться с несколькими вставками и откатом, если один из них не работает? Короткий пример будет приятным.
Вы можете попытаться отключить автокоммутацию. Это может быть автоматическая фиксация вашей первой вставки, даже если вы явно не совершили транзакцию, которая была запущена:
SET autocommit = 0;
START TRANSACTION
......
Если вы используете таблицы InnoDB (или другой совместимый движок), вы можете использовать функцию Transaction MySQL, которая позволяет вам точно выполнять что вы хотите.
Вы можете прочитать и статью с примерами здесь.
НТН!