DECLARE@TranName VARCHAR(20)SELECT@TranName ='MyTransaction'BEGINTRANSACTION@TranName
GO
USE pubs
GO
UPDATE roysched
SET royalty = royalty *1.10WHERE title_id LIKE'Pc%'
GO
COMMITTRANSACTION MyTransaction
GO
Il y a aussi certaines actions qui ne peuvent pas être mis dans une transaction, mais dans la plupart des systèmes de gestion de base de données vous pouvez trouver ces jours-ci, vous devriez être en mesure de restaurer une update.
Enfin, vous pouvez toujours annuler une mise à jour si vous gardez un registre précis de tout ce qui se passe dans la base de données, mais c'est une autre histoire.
6
SQL Server ne prend pas en charge cette sortie de la boîte, mais dans certains cas, il est possible de récupérer des données par la lecture du journal des transactions. Cela fonctionne si la base de données est en mode de récupération complet et 3ème partie outils comme ApexSQL Log ou Journal De Sauvetage sont nécessaires. Il est aussi un moyen de lire t-journal à l'aide de la commande DBCC de commande du JOURNAL, mais il sera probablement se révéler être trop difficile.
Vous pouvez aussi consulter les rubriques ci-après où cela est abordé:
Si vous exécutez la mise à jour à l'intérieur d'une transaction, vous pouvez annuler la transaction.
SQL Server:
begintransactionupdate[Table]set col1 ='test'where Id =3rollbacktransaction
Une autre technique pourrait être d'ajouter un déclencheur de mise à jour de la table, et chaque fois que l'enregistrement est mis à jour, enregistrer les valeurs précédentes dans une "histoire" de la table. Cela peut ou peut ne pas être une bonne idée si cette table est fortement utilisé.
2
Annuler est appelé rollback en SQL. Une fois que vous avez fait un commitvous ne pouvez pas l'annuler sans tomber dans la restauration des sauvegardes.
Notez que fait un rollback annule l'ensemble de la transaction, ce qui signifie que chaque update, insert et delete depuis le début de la transaction, qui est habituellement depuis le dernier commit ou rollback. Cela signifie que si vous faites deux fois de suite les mises à jour, vous ne pouvez pas annuler le deuxième. Certaines bases de données fournissent des "points de sauvegarde" qui ne le permettent.
1
Seulement si vous êtes dans une transaction (comme marcgg) a dit ou si vous avez une sauvegarde récente ... la récupération de cette façon ne stratch le terme "annuler" rathermuch ..
0
Vous pouvez utiliser un outil tiers comme Red Gate Journal De Sauvetage. Il y a 14 jours gratuit, fonctionnel procès de leurs SQL Toolkit. (En supposant que SQL Server 2000!).
Vous ne pouvez pas, à moins que vous il a couru à l'intérieur d'un transaction.
En fonction de votre SGBD transactions seront traitées différemment, afin de lire la documentation. Par exemple avec mysql voici comment ça se passe:
Avec Postresql:
Avec TSQL:
Il y a aussi certaines actions qui ne peuvent pas être mis dans une transaction, mais dans la plupart des systèmes de gestion de base de données vous pouvez trouver ces jours-ci, vous devriez être en mesure de restaurer une
update
.Enfin, vous pouvez toujours annuler une mise à jour si vous gardez un registre précis de tout ce qui se passe dans la base de données, mais c'est une autre histoire.
SQL Server ne prend pas en charge cette sortie de la boîte, mais dans certains cas, il est possible de récupérer des données par la lecture du journal des transactions. Cela fonctionne si la base de données est en mode de récupération complet et 3ème partie outils comme ApexSQL Log ou Journal De Sauvetage sont nécessaires. Il est aussi un moyen de lire t-journal à l'aide de la commande DBCC de commande du JOURNAL, mais il sera probablement se révéler être trop difficile.
Vous pouvez aussi consulter les rubriques ci-après où cela est abordé:
Comment puis-je rollback une mise à JOUR de la requête dans SQL server 2005?
Lire le journal de fichier (*.LDF) dans SQL Server 2008
Si vous exécutez la mise à jour à l'intérieur d'une transaction, vous pouvez annuler la transaction.
SQL Server:
Une autre technique pourrait être d'ajouter un déclencheur de mise à jour de la table, et chaque fois que l'enregistrement est mis à jour, enregistrer les valeurs précédentes dans une "histoire" de la table. Cela peut ou peut ne pas être une bonne idée si cette table est fortement utilisé.
Annuler est appelé
rollback
en SQL. Une fois que vous avez fait uncommit
vous ne pouvez pas l'annuler sans tomber dans la restauration des sauvegardes.Notez que fait un rollback annule l'ensemble de la transaction, ce qui signifie que chaque update, insert et delete depuis le début de la transaction, qui est habituellement depuis le dernier commit ou rollback. Cela signifie que si vous faites deux fois de suite les mises à jour, vous ne pouvez pas annuler le deuxième. Certaines bases de données fournissent des "points de sauvegarde" qui ne le permettent.
Seulement si vous êtes dans une transaction (comme marcgg) a dit ou si vous avez une sauvegarde récente ... la récupération de cette façon ne stratch le terme "annuler" rathermuch ..
Vous pouvez utiliser un outil tiers comme Red Gate Journal De Sauvetage. Il y a 14 jours gratuit, fonctionnel procès de leurs SQL Toolkit. (En supposant que SQL Server 2000!).