kunalkumarsingh Ответов: 4

как сделать отмену sql-запроса


Привет всем,пожалуйста, смотрите следующие queris и дайте мне решение.


"update emp_table set salary=500000"(здесь я не смог дать условие ,очевидно, что вся запись будет обновлена)

Здесь я хочу сделать undo any how ,потому что в этой таблице есть более десяти тысяч записей и для разных сотрудников есть разная зарплата, теперь случайно я уволил вышеприведенный запрос, это ставит меня в очень большую трубу.Пожалуйста, дайте мне несколько трюков как можно скорее .

Заранее большое спасибо

Jim Jos

Вы не сможете отменить все как есть.. Если у вас включена функция аудита, вы будете иметь там все предыдущие значения.. Вам необходимо обновить свою таблицу из таблицы аудита.

kunalkumarsingh

я не имею ни малейшего представления о функции аудита, пожалуйста, скажите мне, как это сделать из таблицы аудита?

Заранее спасибо

ssd_coolguy

если у вас есть резервный файл, то вы можете восстановить таблицу со значениями..

4 Ответов

Рейтинг:
2

uspatel

Если у вас есть резервная копия предыдущих данных, восстановите ее.
Вы можете откатывать только транзакции, а не запрос без транзакции.


Рейтинг:
1

Wendelius

Если вы уже выполнили инструкцию без транзакции, она фиксируется в базе данных. В этом случае вы можете восстановить базу данных в прежней ситуации.

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


Bernhard Hiller

Из информации, предоставленной нам ОП, я заключаю, что это лучший способ сделать: запрос был зафиксирован, аудита не существует. Таким образом, он приблизится к правильному состоянию данных. Надеюсь, что имеется (недавняя) резервная копия...

Рейтинг:
1

Abhinav S

Всегда лучше всего запускать запросы в транзакции, чтобы вы могли откатиться в любое время.


Рейтинг:
0

Mehdi Gholam

Для этого можно использовать транзакции :

begin tran
update emp_table set salary=500000

select * from emp_table

-- rollback tran
-- commit tran

Вы можете провести тестирование с помощью вышеизложенного и если все в порядке использовать commit tran еще rollback tran