Отмена обновления SQL

Существует ли способ, которым мы можем отменить запрос на обновление SQL?

18
задан Juan Mellado 1 May 2012 в 15:56
поделиться

5 ответов

Вы не можете, если не запустили его внутри 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

Есть также некоторые действия, которые нельзя выполнить в транзакции, но в большинстве систем управления СУБД в наши дни вы можете откатить обновление /.

Наконец, вы всегда можете отменить обновление, если ведете точный журнал всего, что происходит в БД, но это уже другая история.

18
ответ дан 30 November 2019 в 07:49
поделиться

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

SQL Server:

begin transaction

update [Table] set col1 = 'test' where Id = 3

rollback transaction

Другое методика может быть добавление триггера обновления в таблицу, и в любое время запись обновляется, сохраняйте предыдущие значения в таблицу «История». Это может или не может быть хорошей идеей, если эта таблица тяжело используется.

5
ответ дан 30 November 2019 в 07:49
поделиться

undo вызывается Откат в SQL. После того, как вы сделали Commit , вы не можете отменить его, не попадая в восстановление резервных копий.

Обратите внимание, что откат отменит целую транзакцию, что означает каждое обновление, вставка и удаление поскольку началась транзакция, которая обычно с момента последнего коммитария или отката. Это означает, что если вы делаете два последовательных обновления, вы не можете отменить только вторую. Некоторые базы данных предоставляют «SavePoints», которые позволяют этому.

2
ответ дан 30 November 2019 в 07:49
поделиться

Только если вы находитесь в транзакции (как Marcgg), или если у вас появится недавнее резервное копирование ... Восстановление того, что пострадают Термин «Отменить» Allught ..

1
ответ дан 30 November 2019 в 07:49
поделиться

Вы можете использовать третий инструмент, похожий на Red Gate's Rescue . Существует 14-дневное бесплатное функциональное испытание их SQL Toolkit. (Предполагая SQL Server 2000!).

0
ответ дан 30 November 2019 в 07:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: