Вот в примере их доков вполне себе выполняется несколько инсерт в одну транзакцию.
try {
$dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
array(PDO::ATTR_PERSISTENT => true));
echo "Подключились\n";
} catch (Exception $e) {
die("Не удалось подключиться: " . $e->getMessage());
}
try {
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->beginTransaction();
$dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
$dbh->exec("insert into salarychange (id, amount, changedate)
values (23, 50000, NOW())");
$dbh->commit();
} catch (Exception $e) {
$dbh->rollBack();
echo "Ошибка: " . $e->getMessage();
}
Другое дело что каждую перегрузку страницы я вновь создаю подключение (открываю его из кэша состояния). Другое дело что транзакция не сохраняется (это не является контекстом, это является особенностью драйвера, ПДО и автокомита/автосброса. Получается что скрипт закончил работу выполнился авто роллбэк и соединение прикрылось.
Выбрал настройку PDO::ATTR_PERSISTENT чтобы соединение кэшировалось, но кэшируется видимо без транзакции, что не хорошо...
T1grOK как следует поступать в данном контексте. Я хочу чтобы у юзера была возможность забить посреди регистрации и при этом ничего в БД не записалась.
_____________
Трус не играет в хокей