Существует ли способ, которым мы можем отменить запрос на обновление SQL?
Вы не можете, если не запустили его внутри trans action.
В зависимости от СУБД транзакции будут обрабатываться по-разному, поэтому ознакомьтесь с документацией. Например, с помощью mysql:
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
С помощью Postresql:
BEGIN;
UPDATE accounts SET balance = balance - 100.00
WHERE name = 'Alice';
-- etc etc
COMMIT;
С помощью TSQL:
DECLARE @TranName VARCHAR(20)
SELECT @TranName = 'MyTransaction'
BEGIN TRANSACTION @TranName
GO
USE pubs
GO
UPDATE roysched
SET royalty = royalty * 1.10
WHERE title_id LIKE 'Pc%'
GO
COMMIT TRANSACTION MyTransaction
GO
Есть также некоторые действия, которые нельзя выполнить в транзакции, но в большинстве систем управления СУБД в наши дни вы можете откатить обновление /
.
Наконец, вы всегда можете отменить обновление, если ведете точный журнал всего, что происходит в БД, но это уже другая история.
Если вы запускаете обновление внутри транзакции, вы можете откатиться транзакцией.
SQL Server:
begin transaction
update [Table] set col1 = 'test' where Id = 3
rollback transaction
Другое методика может быть добавление триггера обновления в таблицу, и в любое время запись обновляется, сохраняйте предыдущие значения в таблицу «История». Это может или не может быть хорошей идеей, если эта таблица тяжело используется.
undo вызывается Откат
в SQL. После того, как вы сделали Commit
, вы не можете отменить его, не попадая в восстановление резервных копий.
Обратите внимание, что откат отменит целую транзакцию, что означает каждое обновление, вставка и удаление поскольку началась транзакция, которая обычно с момента последнего коммитария или отката. Это означает, что если вы делаете два последовательных обновления, вы не можете отменить только вторую. Некоторые базы данных предоставляют «SavePoints», которые позволяют этому.
Только если вы находитесь в транзакции (как Marcgg), или если у вас появится недавнее резервное копирование ... Восстановление того, что пострадают Термин «Отменить» Allught ..
Вы можете использовать третий инструмент, похожий на Red Gate's Rescue . Существует 14-дневное бесплатное функциональное испытание их SQL Toolkit. (Предполагая SQL Server 2000!).