Quelle est la différence entre tronquer et supprimer en SQL

j'ai écrit une réponse à cette question par erreur en réponse à une question sur la différence entre DROP et TRUNCATE , mais j'ai pensé que c'est une honte de ne pas partager, donc je vais poster ma propre réponse à ma propre question ... c'est que même éthique? :)

modifier: si votre réponse est spécifique plate-forme Pouvez-vous s'il vous plaît indiquer que.

201
demandé sur ネロク 2008-09-26 17:53:31

30 réponses

Voici une liste de différences. J'ai mis en évidence des fonctionnalités spécifiques à Oracle, et j'espère que la communauté pourra ajouter des différences spécifiques à d'autres fournisseurs. Les différences qui sont communes à la plupart des fournisseurs peuvent passer directement sous les rubriques, les différences étant mises en évidence ci-dessous.


Aperçu Général

Si vous souhaitez supprimer rapidement toutes les lignes d'une table, et vous êtes vraiment sûr que vous vous voulez le faire, et vous n'avez pas de touches étrangères contre les tables, alors une troncature va probablement être plus rapide qu'une suppression.

diverses questions propres au système doivent être examinées, comme indiqué ci-dessous.


Type de déclaration

Supprimer est DML, Tronquer est DDL


Commit and Rollback

Variable par Vendeur

SQL*Server

tronqué peut être retroussé.

PostgreSQL

tronqué peut être retroussé.

Oracle

parce qu'une tronquée est DDL, elle implique deux commits, l'un avant et l'autre après la déclaration d'exécution. Tronquer peut donc pas être un retour en arrière, et un échec dans le processus tronqué aura émis un commit de toute façon.

cependant, voir Flashback ci-dessous.


la récupération de l'Espace

Supprimer ne permet pas de récupérer de l'espace, de Tronquer récupère de l'espace

Oracle

si vous utilisez la clause de stockage de réutilisation, alors les segments de données ne sont pas dé-alloués, qui peut être légèrement plus efficace si le tableau doit être rechargé avec des données. La laisse de haute mer est réinitialisée.


Ligne de la portée

Supprimer peut être utilisé pour supprimer toutes les lignes ou seulement un sous-ensemble de lignes. Tronquer supprime toutes les lignes.

Oracle

quand une table est partitionnée, les cloisons individuelles peuvent être tronquées dans l'isolement, donc un suppression partielle de toutes les données de la table est possible.


types d'objets

Supprimer peut être appliqué aux tables et aux tables à l'intérieur d'un cluster. La troncature ne s'applique qu'aux tables ou à l'ensemble du groupe. (Peut être spécifique à Oracle)


Identité De L'Objet De Données

Oracle

Supprimer n'affecte pas l'id de l'objet de données, mais truncate assigne un nouvel id d'objet de données à moins que il n'y ait jamais eu d'insertion contre la table depuis sa création même un seul insert qui est retranché fera qu'un nouvel id d'objet de données sera assigné lors de la troncature.


Flashback (Oracle)

Flashback fonctionne à travers les suppressions, mais une troncature empêche flashback de états avant l'opération.

cependant, à partir de 11gR2 la fonctionnalité D'ARCHIVE FLASHBACK le permet, sauf dans L'édition Express

Utilisation de flash-back dans Oracle http://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_flashback.htm#ADFNS638


privilèges

Variable

Oracle

Supprimer peut être accordé sur une table à un autre utilisateur ou rôle, mais truncate ne peut pas être sans utiliser un DROP n'importe quelle subvention de TABLE.


Refaire/Défaire

Supprimer génère une petite quantité de refaire et une grande quantité de l'annuler. Tronquer génère une quantité négligeable de chacun.


index

Oracle

une opération tronquée rend les index inutilisables utilisables à nouveau. Supprimer ne fonctionne pas.


Clés Étrangères

une troncature ne peut pas être appliquée lorsqu'une clé étrangère activée renvoie au tableau. Le traitement avec delete dépend de la configuration des touches étrangères.


Verrouillage De Table

Oracle

troncature nécessite un verrouillage de table exclusif, supprimer nécessite un verrouillage de table partagé. Par conséquent, désactiver les serrures de table est un moyen d'empêcher les opérations de tronçonnage sur une table.


151990920"

déclencheurs DML ne pas tirer sur un truncate.

Oracle

Les déclencheurs

DDL sont disponibles.


Exécution À Distance

Oracle

Truncate ne peut pas être émis sur un lien de base de données.


Colonnes D'Identité

SQL*Server

Truncate resète la séquence pour les types de colonnes D'identité, delete ne le fait pas.


ensemble de résultats

dans la plupart des implémentations, un DELETE peut retourner au client les lignes qui ont été supprimées.

par exemple dans un sous-programme Oracle PL/SQL vous pouvez:

DELETE FROM employees_temp
WHERE       employee_id = 299 
RETURNING   first_name,
            last_name
INTO        emp_first_name,
            emp_last_name;
206
répondu David Aldridge 2018-05-04 14:51:41

la différence entre troncature et suppression est indiquée ci-dessous:

+----------------------------------------+----------------------------------------------+
|                Truncate                |                    Delete                    |
+----------------------------------------+----------------------------------------------+
| We can't Rollback after performing     | We can Rollback after delete.                |
| Truncate.                              |                                              |
|                                        |                                              |
| Example:                               | Example:                                     |
| BEGIN TRAN                             | BEGIN TRAN                                   |
| TRUNCATE TABLE tranTest                | DELETE FROM tranTest                         |
| SELECT * FROM tranTest                 | SELECT * FROM tranTest                       |
| ROLLBACK                               | ROLLBACK                                     |
| SELECT * FROM tranTest                 | SELECT * FROM tranTest                       |
+----------------------------------------+----------------------------------------------+
| Truncate reset identity of table.      | Delete does not reset identity of table.     |
+----------------------------------------+----------------------------------------------+
| It locks the entire table.             | It locks the table row.                      |
+----------------------------------------+----------------------------------------------+
| Its DDL(Data Definition Language)      | Its DML(Data Manipulation Language)          |
| command.                               | command.                                     |
+----------------------------------------+----------------------------------------------+
| We can't use WHERE clause with it.     | We can use WHERE to filter data to delete.   |
+----------------------------------------+----------------------------------------------+
| Trigger is not fired while truncate.   | Trigger is fired.                            |
+----------------------------------------+----------------------------------------------+
| Syntax :                               | Syntax :                                     |
| 1) TRUNCATE TABLE table_name           | 1) DELETE FROM table_name                    |
|                                        | 2) DELETE FROM table_name WHERE              |
|                                        |    example_column_id IN (1,2,3)              |
+----------------------------------------+----------------------------------------------+
132
répondu Bhaumik Patel 2017-09-01 13:55:20

DROP

la commande DROP supprime une table de la base de données. Toutes les lignes, index et privilèges des tables seront également supprimés. Aucun déclencheur DML ne sera déclenché. L'opération ne peut être annulée.

tronqué

TRUNCATE supprime toutes les lignes d'une table. L'opération ne peut être annulée et aucun déclencheur sera déclenché. Comme tel, TRUCATE est plus rapide et n'utilise pas autant d'undo espace SUPPRIMER.

supprimer

la commande Supprimer est utilisée pour supprimer des lignes d'une table. Une clause WHERE peut être utilisée pour supprimer seulement quelques lignes. Si aucune condition WHERE n'est spécifiée, toutes les lignes seront supprimées. Après avoir effectué une opération de suppression, Vous avez besoin de COMMIT ou de Roll Back la transaction pour rendre le changement permanent ou de le défaire. Notez que cette opération provoquera le feu de tous les déclencheurs de suppression sur la table.

De: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands

23
répondu Mohit Singh 2017-04-11 00:33:21

toutes les bonnes réponses, à laquelle je dois ajouter:

depuis TRUNCATE TABLE est un DDL ( Data Defination Language ), pas un DML ( Data Manipulation Langauge ) commande, le Delete Triggers ne s'exécute pas.

22
répondu polara 2016-01-22 22:16:58

avec SQL Server ou MySQL, s'il y a un PK avec auto increment, truncate réinitialisera le compteur.

14
répondu mathieu 2016-01-22 22:20:27

"Truncate ne log rien" est correct. J'irais plus loin:

Truncate n'est pas exécuté dans le cadre d'une transaction.

l'avantage de la troncature par rapport à la suppression doit être évident. Cet avantage va de trivial à énorme, selon votre situation.

cependant, j'ai vu truncate briser involontairement l'intégrité référentielle, et violer d'autres contraintes. Le pouvoir que vous gagnez par modifier des données en dehors d'une transaction doit être mis en balance avec la responsabilité que vous héritez lorsque vous marchez sur la corde raide sans un filet.

11
répondu Walter Mitty 2008-09-26 14:12:14

résumé de Delete Vs Truncate in SQL server

Pour L'Article complet, suivez ce lien: http://codaffection.com/sql-server-article/delete-vs-truncate-in-sql-server /

enter image description here

tiré de l'article de dotnet mob: Delete Vs Truncate in SQL Server

10
répondu Shamseer K 2018-08-12 03:32:43

Oui, supprimer est plus lent, tronquer est plus rapide. Pourquoi?

SUPPRIMER doit lire les enregistrements, les contraintes de vérification, de mise à jour de la bloquer, mettre à jour des index, et de générer de refaire/défaire. Tout cela prend du temps.

TRUNCATE ajuste simplement un pointeur dans la base de données pour la table (la marque des hautes eaux) et poof! les données ont disparu.

C'est spécifique à Oracle, AFAIK.

6
répondu DCookie 2008-09-27 13:46:01

si accidentellement vous avez supprimé toutes les données de la table en utilisant Delete/Truncate. Vous pouvez annuler la transaction engagée. Restaurer la dernière sauvegarde et exécuter le journal des transactions jusqu'au moment où Delete/Truncate est sur le point de se produire.

Les informations ci-dessous proviennent de un blog :

en travaillant sur la base de données, nous utilisons supprimer et tronquer sans connaître les différences entre eux. Dans ce article, nous allons discuter de la différence entre supprimer et tronquer en Sql.

Supprimer:

  • Supprimer un DML commande.
  • Supprimer l'énoncé est exécuté en utilisant un verrouillage de ligne,chaque ligne dans la table est verrouillée pour suppression.
  • nous pouvons spécifier les filtres dans la clause where.
  • il supprime les données spécifiées si la condition existe.
  • Supprimer activités déclencheur parce que l'opération sont enregistrés individuellement.
  • plus lent que la tronçonneuse parce qu'il garde les rondins

tronqué

  • Truncate est une commande DDL.
  • table tronquée toujours verrouiller la table et la page, mais pas chaque ligne.Comme il supprime toutes les données.
  • Ne peut pas utiliser dans la condition where.
  • il supprime tous les données.
  • La table tronquée
  • ne peut pas activer un déclencheur parce que l'opération n'enregistre pas les suppressions de lignes individuelles.
  • plus rapide en termes de performances, parce qu'il ne garde pas de logs.

Note: supprimer et tronquer les deux peuvent être retranchés lorsqu'ils sont utilisés avec Transaction. Si la Transaction est faite, signifie engagé alors nous ne pouvons pas commande de troncature de retour, mais nous pouvons quand même supprimer la commande à partir des fichiers Journaux, comme supprimer écrire les enregistre dans un fichier Journal dans le cas où il est nécessaires à la restauration dans l'avenir à partir des fichiers journaux.

si vous avez une contrainte de clé étrangère se référant au tableau vous êtes essayer de tronquer, cela ne fonctionnera pas même si la table de référence n'a pas les données qu'il contient. C'est parce que la vérification de clé étrangère est faite avec DDL plutôt que DML. Ceci peut être contourné en désactivant temporairement le contrainte de clé étrangère(s) à la table.

Supprimer le tableau est connecté opération. Donc la suppression de chaque ligne obtient enregistré dans le journal des transactions, ce qui le rend lent. Truncate table supprime également toutes les lignes d'un tableau, mais il ne logue pas la suppression de chaque ligne à la place elle enregistre la désallocation des pages de données du table, ce qui le rend plus rapide.

~ si accidentellement vous avez enlevé toutes les données de la table en utilisant Supprimer / Tronquer. Vous pouvez annuler la transaction engagée. Restaurer la dernière sauvegarde et exécuter journal des transactions jusqu'au moment où Supprimer/tronquer est sur le point d'arriver.

5
répondu wpzone4u 2014-08-21 12:11:59

TRUNCATE est la déclaration DDL tandis que DELETE est une déclaration DML. Voici les différences entre les deux:

  1. Comme TRUNCATE est un DDL ( langage de définition de Données ), il ne nécessite pas de s'engager à rendre les modifications permanentes. Et c'est la raison pour laquelle les lignes supprimées par truncate ne pouvaient pas être roulées. D'autre part DELETE est un DML ( manipulation de données langue ) la déclaration exige donc un engagement explicite pour rendre son effet permanent.

  2. TRUNCATE supprime toujours toutes les lignes d'une table, laissant la table vide et la structure de la table intacte tandis que DELETE peut supprimer conditionnellement si la clause où est utilisé.

  3. les lignes supprimées par TRUNCATE TABLE ne peuvent pas être restaurées et vous ne pouvez pas spécifier la clause where dans la déclaration TRUNCATE .

  4. TRUNCATE les énoncés ne déclenchent pas d'incendie au lieu de supprimer le déclencheur sur DELETE l'énoncé

Ici est le très bon lien pour le sujet.

5
répondu Sachin Chourasiya 2016-01-22 22:27:36

tronqué

  • c'est plus rapide et utilise moins de ressources du système et du journal des transactions que DELETE .
  • supprime les données en désallocalisant les pages de données utilisées pour stocker les données de la table, et seules les désallocations de page sont enregistrées dans le journal des transactions.
  • supprime toutes les lignes d'une table, mais la structure de la table, ses colonnes, contraintes, index et ainsi de suite, reste. Le compteur utilisé par une identité pour les nouvelles lignes est réinitialisé à la graine pour la colonne.
  • vous ne pouvez pas utiliser TRUNCATE TABLE sur une table référencée par une contrainte FOREIGN KEY . Parce que TRUNCATE TABLE n'est pas enregistré, il ne peut pas activer un déclencheur.
  • ne peut pas être annulée.
  • C'est la commande DDL.
  • réinitialise l'identité de la table

supprimer

  • supprime les lignes une à une temps et enregistre une entrée dans le journal des transactions pour chaque ligne supprimée.
  • si vous voulez conserver le compteur d'identité, utilisez DELETE à la place. Si vous voulez supprimer la définition de la table et ses données, utilisez l'instruction DROP TABLE .
  • peut être utilisé avec ou sans la WHERE clause
  • active les déclencheurs.
  • peut être retranché.
  • C'est la commande DML.
  • ne réinitialise pas l'identité de la table.

Note: DELETE et TRUNCATE à la fois peut être annulée lorsque l'on est entouré par TRANSACTION si la session n'est pas fermée. Si TRUNCATE est écrit dans L'éditeur de requête entouré par TRANSACTION et si la session est fermée, il ne peut pas être retranché mais DELETE peut être retranché.

4
répondu Vlad 2016-01-22 22:31:26

dans SQL Server 2005 je crois que vous can roll back a truncate

3
répondu 2009-03-27 12:26:39

supprimer

la commande Supprimer est utilisée pour supprimer des lignes d'une table. Une clause WHERE peut être utilisée pour supprimer seulement quelques lignes. Si aucune condition WHERE n'est spécifiée, toutes les lignes seront supprimées. Après avoir effectué une opération de suppression, Vous avez besoin de COMMIT ou de Roll Back la transaction pour rendre le changement permanent ou de le défaire. Notez que cette opération provoquera le feu de tous les déclencheurs de suppression sur la table.

tronqué

TRUNCATE supprime toutes les lignes d'une table. L'opération ne peut être annulée et aucun déclencheur sera déclenché. En tant que tel, TRUCATE est plus rapide et n'utilise pas autant d'espace défait qu'une suppression.

DROP

la commande DROP supprime une table de la base de données. Toutes les lignes, index et privilèges des tables seront également supprimés. Aucun déclencheur DML ne sera déclenché. L'opération ne peut être annulée.


DROP et TRUNCATE sont des commandes DDL, tandis que DELETE est une commande DML. Par conséquent, les opérations D'effacement peuvent être reprises (désactivées), tandis que les opérations de dépose et de tronçonnage ne peuvent pas être reprises.

de: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands

3
répondu MyUserQuestion 2017-04-11 00:36:11

une petite correction à la réponse originale - supprimer génère également des quantités significatives de redo (comme undo est lui-même protégé par redo). Cela peut être vu à partir de la sortie autotrace:

SQL> delete from t1;

10918 rows deleted.

Elapsed: 00:00:00.58

Execution Plan
----------------------------------------------------------
   0      DELETE STATEMENT Optimizer=FIRST_ROWS (Cost=43 Card=1)
   1    0   DELETE OF 'T1'
   2    1     TABLE ACCESS (FULL) OF 'T1' (TABLE) (Cost=43 Card=1)




Statistics
----------------------------------------------------------
         30  recursive calls
      12118  db block gets
        213  consistent gets
        142  physical reads
    3975328  redo size
        441  bytes sent via SQL*Net to client
        537  bytes received via SQL*Net from client
          4  SQL*Net roundtrips to/from client
          2  sorts (memory)
          0  sorts (disk)
      10918  rows processed
2
répondu CaptainPicard 2008-09-27 15:26:59
Le

tronqué peut être retranché s'il est emballé dans une transaction.

s'il vous Plaît voir les deux références ci-dessous et de tester vous-même:-

http://blog.sqlauthority.com/2007/12/26/sql-server-truncate-cant-be-rolled-back-using-log-files-after-transaction-session-is-closed /

http://sqlblog.com/blogs/kalen_delaney/archive/2010/10/12/tsql-tuesday-11-rolling-back-truncate-table.aspx

TRUNCATE vs SUPPRIMER est l'un de l'infâme questions au cours de SQL entretiens. Assurez-vous de bien l'expliquer à l'intervieweur ou cela pourrait vous coûter le travail. Le problème est que peu sont conscients de sorte que le plus probable qu'ils considéreront la réponse comme fausse si vous leur dites que oui Truncate peut être retranchée.

2
répondu SQLnbe 2014-08-21 17:21:28

la plus grande différence est que la troncature n'est pas enregistrée alors que la suppression l'est.

signifie simplement qu'en cas de plantage d'une base de données , vous ne pouvez pas récupérer les données exploitées par truncate mais avec delete vous pouvez.

plus de détails ici

1
répondu Learning 2008-09-26 13:56:46

supprimer L'énoncé: cette commande supprime uniquement les lignes de la table en fonction de la condition indiquée dans la clause where ou supprime toutes les lignes de la table si aucune condition n'est spécifiée. Mais il ne libère pas l'espace contenant la table.

la syntaxe D'un énoncé de suppression SQL est:

Supprimer de table_name [WHERE condition];

déclaration tronquée: cette commande est utilisée pour supprimer toutes les lignes du tableau et libérez l'espace contenant la table.

1
répondu Bhushan Patil 2013-06-26 22:15:24

supprimer

DELETE is a DML command
DELETE you can rollback
Delete = Only Delete- so it can be rolled back
In DELETE you can write conditions using WHERE clause
Syntax – Delete from [Table] where [Condition]

tronqué

TRUNCATE is a DDL command
You can't rollback in TRUNCATE, TRUNCATE removes the record permanently
Truncate = Delete+Commit -so we can't roll back
You can't use conditions(WHERE clause) in TRUNCATE
Syntax – Truncate table [Table]

pour plus de détails visitez

http://www.zilckh.com/what-is-the-difference-between-truncate-and-delete /

1
répondu user27332 2013-09-07 12:46:35

une autre différence entre les deux opérations est que si le tableau contient une colonne d'identité, le compteur pour cette colonne est réinitialisé 1 (ou à la valeur de graine définie pour la colonne) sous troncature. Supprimer n'a pas cet effet.

1
répondu westyside 2014-10-06 09:44:39

voici ma réponse détaillée sur la différence entre supprimer et tronquer dans SQL Server

supprimer les données : tout d'abord, les deux peuvent être utilisés pour supprimer les lignes du tableau.

Mais une suppression peut être utilisée pour supprimer les lignes non seulement d'une Table mais aussi d'une vue ou le résultat d'un OPENROWSET ou OPENQUERY sujet aux capacités du fournisseur.

de la Clause : avec DELETE vous pouvez également supprimer des lignes d'une table/view/rowset_fonction_limited basée sur des lignes d'une autre table en utilisant une autre de la clause. Dans cela de la clause vous pouvez également écrire des conditions normales D'adhésion. En fait, vous pouvez créer une instruction DELETE à partir d'une instruction SELECT qui ne contient aucune fonction aggregate en remplaçant SELECT par DELETE et en supprimant les noms de colonne.

Avec TRUNCATE, tu ne peux pas faire ça.

: une tronque ne peut pas avoir où Conditions, mais une suppression peut. Cela signifie qu'avec TRUNCATE vous ne pouvez pas supprimer une ligne spécifique ou un groupe spécifique de lignes. Le tableau tronqué est similaire à L'énoncé de suppression sans clause où.

Performance : TRUNCATE TABLE est plus rapide et utilise moins de système de journal des transactions et de ressources. Et l'une des raisons est verrous utilisée par les deux états. La déclaration DELETE est exécuté en utilisant un verrou de rangée, chaque rangée dans la table est verrouillée pour suppression. La TABLE tronquée verrouille toujours la table et la page mais pas chaque ligne.

journal des transactions : supprimer l'énoncé supprime les lignes une à la fois et fait des entrées individuelles dans le journal des transactions pour chaque ligne.

La TABLE tronquée supprime les données en désallocant les pages de données utilisées pour stocker les données de la table et enregistre seulement les désallocations de la page dans le journal des transactions.

Pages : après l'exécution d'une instruction DELETE, le tableau peut toujours contenir des pages vides. TRUNCATE supprime les données en désallocant les pages de données utilisées pour stocker les données de la table.

Déclencheur : TRUNCATE ne pas activer les déclencheurs delete sur la table. Vous devez donc être très prudent en utilisant TRUNCATE. On ne devrait jamais utiliser de troncature si le déclencheur de suppression est défini sur le table pour faire une action de nettoyage ou de journalisation automatique lorsque les lignes sont supprimées.

colonne D'identité : avec troncature si le tableau contient une colonne d'identité, le compteur pour cette colonne est réinitialisé à la valeur de graine définie pour la colonne. Si aucune graine n'a été définie, la valeur par défaut 1 est utilisée. Supprimer ne réinitialise pas le compteur d'identité. Donc, si vous voulez conserver le compteur d'identité, utilisez supprimer à la place.

Réplication : Supprimer peut être utilisé contre la table utilisée dans la réplication transactionnelle ou la réplication de fusion.

Alors que TRUNCATE ne peut pas être utilisé contre les tables impliquées dans la réplication transactionnelle ou la réplication de fusion.

Rollback : supprimer l'énoncé peut être retranché.

La troncature peut également être retravaillée à condition qu'elle soit incluse dans un bloc de TRANSACTION et que la session ne soit pas fermée. Lorsque la session est terminée. vous ne pourrez pas vous rétracter.

Restrictions : la déclaration DELETE peut échouer si elle viole un déclencheur ou tente de supprimer une ligne référencée par des données dans une autre table avec une contrainte de clé étrangère. Si la suppression supprime plusieurs lignes, et que l'une des lignes supprimées viole un déclencheur ou une contrainte, la déclaration est annulée, une erreur est renvoyée, et aucune ligne n'est supprimée.

Et si supprimer est utilisée contre View, cette vue doit pouvoir être mise à jour. La troncature ne peut pas être utilisée contre la table utilisée dans la vue indexée.

La troncature ne peut pas être utilisée contre la table référencée par une contrainte de clé étrangère, à moins qu'une table qui a une clé étrangère qui se réfère elle-même.

1
répondu Mangal Pardeshi 2015-11-05 09:49:39

en bref, truncate ne logue rien (donc est beaucoup plus rapide mais ne peut pas être défait) alors que delete est journalisé (et peut faire partie d'une transaction plus grande, sera rollback etc). Si vous avez des données que vous ne voulez pas dans une table dans dev il est normalement préférable de tronquer car vous ne courez pas le risque de remplir le journal des transactions

0
répondu Oskar 2008-09-26 13:56:46

une grande raison, il est pratique, est quand vous avez besoin de rafraîchir les données dans une table de rangée de plusieurs millions, mais ne veulent pas reconstruire. "Supprimer *" prendrait une éternité, alors que l'impact de la troncature sur le rendement serait négligeable.

0
répondu Jordan Ogren 2008-09-26 14:17:41

ne peut pas faire de DDL sur un dblink.

0
répondu 2008-09-26 23:44:22

j'aimerais Commenter le billet de matthieu, mais je n'ai pas encore la réputation...

dans MySQL, le compteur automatique d'incréments est réinitialisé avec truncate, mais pas avec delete.

0
répondu nathan 2008-09-27 01:08:01

ce n'est pas que truncate n'enregistre rien dans SQL Server. truncate n'enregistre aucune information mais il enregistre la page de désallocation des données pour la table sur laquelle vous avez tiré TRUNCATE.

et le document tronqué peut être retranché si nous définissons la transaction au début et nous pouvons récupérer le document tronqué après le retrancher. Mais ne peut pas récupérer des enregistrements tronqués à partir de la sauvegarde de journal des transactions après la transaction tronquée engagée.

0
répondu user2587360 2014-01-25 07:19:54

Truncate peut également être Rollbacké ici l'exapmle

begin Tran
delete from  Employee

select * from Employee
Rollback
select * from Employee
0
répondu Vinay Pandit 2014-07-30 08:38:54

tronquer et supprimer dans SQL sont deux commandes qui est utilisé pour supprimer ou supprimer des données de la table. Bien que de nature assez basique, les deux commandes Sql peuvent créer beaucoup de problèmes jusqu'à ce que vous soyez familier avec les détails avant de les utiliser. Un choix de commande Incorrect peut en résulter soit un processus très lent, soit même une explosion du segment log, si trop de données doivent être supprimées et le segment log ne suffit pas. C'est pourquoi il est essentiel de savoir quand utiliser la commande truncate et delete en SQL mais avant en utilisant ceux-ci, vous devriez être conscient des différences entre Truncate et supprimer, et basé sur eux, nous devrions être en mesure de savoir quand supprimer est une meilleure option pour supprimer des données ou TRUNCATE devrait être utilisé pour purger les tables.

reportez-vous cochez la case cliquez ici

0
répondu wpzone4u 2014-08-22 18:20:15

en émettant une déclaration de TABLE tronquée, vous demandez à SQL Server de supprimer chaque enregistrement dans une table, sans aucune journalisation ou traitement de transaction.

0
répondu Gerald 2014-10-06 00:25:47

supprimer

lorsque L'instruction DELETE est exécutée sans clause WHERE, elle supprimera toutes les lignes. Toutefois, lorsqu'un nouvel enregistrement est inséré, la valeur d'identité passe de 11(identité maximale ) à 12. Il ne se réinitialise pas mais continue à augmenter. tronqué

lorsque la déclaration tronquée est exécutée, elle supprimera toutes les lignes. Toutefois, lorsqu'un nouvel enregistrement est inséré la valeur d'identité est augmenté de 11 (qui est la valeur d'origine). TRUNCATE resète la valeur d'identité à la valeur initiale de la table.

DROP

0
répondu Vivek Panday 2015-04-16 10:03:16

supprimer et tronquer les deux peuvent être retranchés lorsqu'ils sont utilisés avec la TRANSACTION.

si la Transaction est faite, signifie Commité, alors nous ne pouvons pas faire reculer la commande TRUNCATE, mais nous pouvons toujours faire reculer la commande DELETE à partir des fichiers journaux, car DELETE write les enregistre dans le fichier journal au cas où il serait nécessaire de les faire reculer à l'avenir à partir des fichiers journaux.

0
répondu 2015-06-05 07:56:38