Introduction:
Dans cet article, nous explorerons les différences entre les commandes SQL Truncate et SQL Delete dans SQL Server. Il est important de comprendre le comportement de ces commandes afin de prendre des décisions éclairées lors de la manipulation des données dans votre base de données.
Peut-on annuler une transaction de suppression et une commande de troncature?
Une question courante qui se pose lors de l’utilisation de ces commandes est de savoir s’il est possible d’annuler une transaction de suppression ou une commande de troncature. La réponse est oui, vous pouvez annuler à la fois les opérations de suppression et de troncature. Cependant, il existe des différences dans la manière dont ces opérations sont enregistrées et comment elles peuvent être annulées.
Lequel est plus rapide, Truncate ou Delete et pourquoi?
Un autre point important à prendre en compte lors du choix entre la troncature et la suppression est la différence de performance entre les deux commandes. La troncature est généralement plus rapide que la suppression, surtout lorsqu’il s’agit de grandes tables. Cela est dû au fait que les opérations de troncature ne génèrent pas d’opérations de suppression individuelles au niveau des lignes dans le journal des transactions, ce qui entraîne moins de journalisation et une exécution plus rapide.
Annuler une transaction de suppression:
Jetons un coup d’œil à un exemple pour comprendre comment l’annulation fonctionne pour une transaction de suppression. Nous allons créer une nouvelle base de données et une table de données d’exemple:
CREATE DATABASE SQLShackDemo;
GO
USE SQLShackDemo;
GO
CREATE TABLE test (
id INT IDENTITY(1, 1),
[Name] VARCHAR(10)
);
GO
INSERT INTO test ([Name]) VALUES ('DonnéesExemple');
GO 10
Maintenant, commençons une transaction de suppression et supprimons toutes les lignes de la table de test:
USE SQLShackDemo;
GO
BEGIN TRANSACTION;
DELETE FROM dbo.test;
Si nous interrogeons la table de test, nous verrons que toutes les lignes ont été supprimées:
SELECT COUNT(*) FROM dbo.test;
Maintenant, annulons la transaction de suppression et vérifions le nombre de lignes dans la table de test:
ROLLBACK TRANSACTION;
SELECT COUNT(*) FROM dbo.test;
Comme nous pouvons le voir, l’opération d’annulation restaure les lignes supprimées et la table de test contient maintenant les 10 lignes d’origine.
Annuler une transaction de troncature:
Maintenant, explorons la possibilité d’annuler une instruction de troncature. Pour cette démonstration, nous allons supprimer la table de test et la recréer avec les mêmes 10 lignes:
USE SQLShackDemo;
GO
DROP TABLE dbo.test;
GO
CREATE TABLE test (
id INT IDENTITY(1, 1),
[Name] VARCHAR(10)
);
GO
INSERT INTO test ([Name]) VALUES ('DonnéesExemple');
GO 10
Ensuite, commençons une nouvelle transaction et tronquons la table de test:
USE SQLShackDemo;
GO
BEGIN TRANSACTION;
TRUNCATE TABLE dbo.test;
Si nous interrogeons la table de test, nous verrons que toutes les lignes ont été supprimées:
SELECT COUNT(*) FROM dbo.test;
Maintenant, annulons la transaction de troncature et vérifions le nombre de lignes dans la table de test:
ROLLBACK TRANSACTION;
SELECT COUNT(*) FROM dbo.test;
Comme nous pouvons le voir, l’opération d’annulation restaure la table tronquée et la table de test contient maintenant les 10 lignes d’origine.
Conclusion
Dans cet article, nous avons exploré le comportement des commandes SQL Truncate et SQL Delete dans SQL Server. Nous avons appris que la troncature est plus rapide que la suppression, surtout pour les grandes tables, en raison de sa journalisation minimale. Nous avons également vu que les opérations de suppression et de troncature peuvent être annulées, permettant ainsi la récupération des données si nécessaire. Il est important de prendre en compte ces facteurs lors de la décision de la commande à utiliser dans vos opérations de base de données.