Как правильно обрабатывать ошибку создания таблицыC++

Программы на C++. Форум разработчиков
Anonymous
Как правильно обрабатывать ошибку создания таблицы

Сообщение Anonymous »

ВСЕ,
Рассмотрим следующий псевдокод:

Код: Выделить всё

std::vector queries;
queries.push_back( "CREATE TABLE X1();" );
queries.push_back( "CREATE TABLE X2();" );
queries.push_back( "CREATE TABLE X3();" );
queries.push_back( "INSERT INTO X! VALUES();" );
queries.push_back( "INSERT INTO X1 VALUES();" );
queries.push_back( "INSERT INTO X2 VALUES();" );
queries.push_back( "INSERT INTO X2 VALUES();" );
queries.push_back( "INSERT INTO X3 VALUES();" );
queries.push_back( "INSERT INTO X3 VALUES();" );
for( std::vector::iterator it = queries.begin(); it < queries.end(); ++ it )
{
res = execute( (*it) );
if( failure )
break;
}
Если по какой-либо причине самая первая команда не удалась, то все хорошо.
Однако, если вторая или третья команда не удалась - я бы хотел удалить все ранее созданные таблицы, исследовать их и затем начать заново, поскольку продолжать не имеет особого смысла из-за логики программы.
Насколько я знаю, только SQLite поддерживает транзакционный DDL.
Итак, как люди справляются с такими ситуациями, как это?
TIA!!
Приведенный выше фрагмент представляет собой псевдокод, поскольку он не зависит от СУБД, и вопрос очень общий..

Подробнее здесь: https://stackoverflow.com/questions/798 ... on-failure

Вернуться в «C++»