Я хочу сделать что-то подобное:
1) начать транзакцию
2) запустить query1, игнорируя ограничения
3) запустить query2, игнорируя ограничения
4) проверить ограничения:
4а) если они в порядке - совершить
4б) также откат
пример:
DROP TABLE IF EXISTS `atable`;
CREATE TABLE `atable` (
`id` int AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `btable`;
CREATE TABLE `btable` (
`id` int AUTO_INCREMENT,
`a_id` int,
PRIMARY KEY (`id`),
CONSTRAINT `b_fk` FOREIGN KEY (`a_id`) REFERENCES `atable` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
первый запуск этого скрипта - проход .... второй - не потому, что btable ссылается на atable, поэтому он не работает на "drop table atable".
Спасибо.