2015-10-31 4 views
-2

Я удалил запись из своей таблицы, и после выполнения команды отката он показывает, что «команда завершена успешно», но когда я проверяю ее с помощью оператора select, таблица по-прежнему выглядит пустой? Зачем ? enter image description hereКак отменить транзакцию с помощью команды отката?

+0

Показать запрос, который вы получили, включая начало и откат транзакции – Luc

+0

Как вы выполняете запрос и транзакцию? Через клиентское приложение, такое как VB? И какая у вас платформа SQL? MySQL, SQL Server ...? – itsols

+0

Я выполняю на SQL Server и транзакцию, выполненную с помощью команды BEGIN Transaction –

ответ

2

Некоторые методы подключения к базе данных, такие как ODBC по умолчанию, так называемые "autocommit" mode, то есть соединение с базой данных автоматически выдает COMMIT после выполнения каждого оператора. JDBC does the same thing. Я не могу сказать, если это то, что происходит в вашем случае, но если так, то нет возможности сделать ROLLBACK. Удачи.

1

Команда отката возвращает вас к последнему зафиксированному состоянию таблицы. Я полагаю, что ваш запрос на удаление мог содержать некоторый оператор, который совершил изменение (удаление записи).

+0

это означает, что я могу отменить мою транзакцию до того, как я запустил команду Commit? –

+0

Да, вы можете. Но, как @BobJarvis сказал, что в некоторых случаях включен режим «autocommit». Следовательно, после того, как вы удалили запись, возможно, изменения были совершены и, следовательно, вы не можете отменить изменение с помощью команды отката. – VishalProgrammer

0

Джейсон Кларк,

Я сделал тест, используя MySql и использовать "начать", "удалить" и "откат", используется следующий SQL (пример):

начала; удалить из aluno, где id = 1; откатить;

В PostgreSQL синтаксис SQL одинаков и работает.

Вы уверены, что используете правильный SQL? Возможно, я ошибся? Действительно ли нужно использовать «начать транзакцию» вместо «начать»?

Надеюсь, это поможет!

Смежные вопросы