Как правильно обрабатывать ошибку создания таблицы?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, так как же люди справляются с такими ситуациями?>

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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