PDO бросает эксепшен только если транзакция не поддерживается драйвером. А вот такая шняга пролазит на ура :) Если таблица MyISAM :
$pdo->startTransaction();
$dbh->exec("DROP TABLE `table`");
$pdo->rollback();
Как сие предотвратить? Вернее мне не предотвратить надо, а предупредить, что транзакция текущим движком не поддерживается.
Можно было бы (ресурс тут не важен) сделаь проверку. К примеру запрос
SELECT ENGINE FROM INFORMATION_SCHEMA.TABLESпокажет то что надо - текущий тип. Но для этого нужно знать имя таблицы. А его нет, есть только текст запроса. Парсить его из запроса не вариант. Там могут и join быть, и union, и бог весть что.
WHERE TABLE_NAME = 'table'
Мож есть мысли у кого, пока я голову грею? :)
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.
Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.
Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.