C'è un modo per annullare una query di aggiornamento SQL?Aggiornamento SQL Annulla
risposta
Non è possibile a meno che non lo si è eseguito all'interno di un transaction.
A seconda delle transazioni DBMS verranno gestite in modo diverso, quindi leggere la documentazione. Per esempio con mysql ecco come va:
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET [email protected] WHERE type=1;
COMMIT;
Con Postresql:
BEGIN;
UPDATE accounts SET balance = balance - 100.00
WHERE name = 'Alice';
-- etc etc
COMMIT;
Con 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
Ci sono anche alcune azioni che non possono essere messi in una transazione , ma nella maggior parte dei sistemi di gestione di database che puoi trovare in questi giorni dovresti essere in grado di eseguire il rollback di un update
.
Infine puoi sempre annullare un aggiornamento se tieni un registro preciso di tutto ciò che accade nel database, ma questa è un'altra storia.
Se si esegue l'aggiornamento all'interno di una transazione, è possibile eseguire il rollback della transazione.
SQL Server:
begin transaction
update [Table] set col1 = 'test' where Id = 3
rollback transaction
Un'altra tecnica potrebbe essere quella di aggiungere un trigger di aggiornamento al tavolo, e in qualsiasi momento il record viene aggiornato, salvare i valori precedenti al largo in una tabella "storia". Questa potrebbe essere una buona idea se questa tabella è molto utilizzata.
Undo è chiamato rollback
in SQL. Dopo aver eseguito uno commit
, non è possibile annullarlo senza dover ripristinare i backup.
Si noti che facendo un rollback si annulla un'intera transazione, il che significa che ogni aggiornamento, inserimento ed eliminazione dall'inizio della transazione, che di solito è dall'ultimo commit o rollback. Ciò significa che se si eseguono due aggiornamenti consecutivi, non è possibile annullare solo il secondo. Alcuni database forniscono "punti di salvataggio" che lo consentono.
Solo se ci si trova in una transazione (come marcgg) ha detto o se si dispone di un backup recente ... recuperando in questo modo fa stratch il termine "Annulla" rathermuch ..
È possibile utilizzare uno strumento di terze parti come il Red Gate's Log Rescue. È disponibile una versione di prova gratuita di 14 giorni del loro kit di strumenti SQL. (Supponendo SQL Server 2000!).
SQL Server non supporta questa funzionalità, ma in alcuni casi è possibile ripristinare i dati leggendo il log delle transazioni. Funziona se il database era in modalità di ripristino completo e sono necessari strumenti di terze parti come ApexSQL Log o Log Rescue. C'è anche un modo per leggere t-log usando il comando DBCC LOG ma probabilmente si rivelerà troppo difficile.
È anche possibile controllare i seguenti argomenti in cui questo è discusso:
- 1. SQL Server - dopo l'inserimento/per l'inserimento - Annulla
- 2. Aggiornamento SQL dall'istruzione select
- 3. Aggiornamento trigger T-SQL
- 4. Aggiornamento SQL con row_number()
- 5. Sql Query di aggiornamento
- 6. Annulla tutte le richieste di aggiornamento in una sola volta?
- 7. Aggiornamento tramite LINQ a SQL
- 8. Aggiornamento dell'istanza SQL tramite ClickOnce
- 9. T-SQL Inserimento o aggiornamento
- 10. C#, aggiornamento SQL più righe
- 11. Aggiornamento più record in SQL
- 12. LINQ to SQL - aggiornamento record
- 13. Utilizzando Distinti in SQL Aggiornamento
- 14. aggiornamento database sql con ContentValues e il metodo di aggiornamento
- 15. Trigger SQL di aggiornamento riga multiplo da singola istruzione SQL di aggiornamento
- 16. Aggiornamento cumulativo con LINQ to SQL
- 17. Strategia di aggiornamento dello schema SQL Azure
- 18. Aggiornamento SQL dopo l'unione di due tabelle
- 19. Aggiornamento di più colonne in SQL
- 20. SQL query di aggiornamento fila top1
- 21. Oracle SQL: aggiornamento se esiste altro inserire
- 22. Aggiornamento SQL con due tavoli in Oracle
- 23. Aggiornamento server SQL utilizzando più tabelle
- 24. SQL istruzione di aggiornamento in C#
- 25. SQL Server: aggiornamento colonna in un albero
- 26. Aggiornamento del database con più SQL Statments
- 27. Aggiornamento server SQL con gruppo di
- 28. Aggiornamento SQL Azure dimensione del database
- 29. Aggiornamento SQL da un join interno
- 30. query di aggiornamento in Spark SQL
Tu non dici quello database in uso.Se si utilizza Oracle, è possibile provare una query di flashback per recuperare i dati incasinati. –