Was ist der Unterschied zwischen TRUNCATE und DELETE in SQL
Frage
Was ist der Unterschied zwischen TRUNCATE
und DELETE
in SQL?
Wenn Ihre Antwort-Plattform spezifisch ist, wenden Sie sich bitte, dass an.
Lösung
Hier ist eine Liste von Unterschieden. Ich habe hervorgehoben Oracle-spezifische Funktionen, und hoffentlich die Gemeinschaft kann auch in anderen Herstellern spezifische Differenz hinzuzufügen. Unterschiede, die für die meisten Hersteller gemeinsam sind, können direkt unter den Überschriften gehen, mit Unterschieden unten hervorgehoben.
Allgemeine Übersicht
Wenn Sie alle Zeilen aus einer Tabelle schnell löschen, und Sie sind wirklich sicher, dass Sie es tun wollen, und Sie haben keine Fremdschlüssel für die Tabellen, dann ein TRUNCATE wird wahrscheinlich schneller sein als ein DELETE.
Verschiedene systemspezifische Aspekte berücksichtigt werden müssen, wie nachfolgend beschrieben.
Statement Typ
Löschen DML ist, Kürzen ist DDL ( Was ist DDL und DML? )
Commit und Rollback
Variable vom Anbieter
SQL * Server
Kürzen werden kann rückgängig gemacht.
PostgreSQL
Kürzen werden kann rückgängig gemacht.
Oracle
Da ein TRUNCATE DDL ist es beinhaltet zwei Commits, eine vor und eine nach der Ausführung der Anweisung. Kürzen kann daher nicht rückgängig gemacht werden, und ein Fehler in dem truncate Prozess wird ein ohnehin ausgegeben begehen.
Allerdings siehe unten Rückblick.
Space Gewinnung
Löschen Raum nicht erholen, Kürzen erholt Raum
Oracle
Wenn Sie die REUSE STORAGE-Klausel verwenden, dann werden die Datensegmente nicht de-zugeordnet, die geringfügig effizienter sein kann, wenn die Tabelle mit Daten neu geladen werden ist. Die Hochwassermarke zurückgesetzt wird.
Zeile Anwendungsbereich
Löschen kann verwendet werden, um alle Zeilen zu entfernen oder nur eine Teilmenge der Zeilen. Kürzen entfernt alle Zeilen.
Oracle
Wenn eine Tabelle partitioniert ist, können die einzelnen Partitionen isoliert abgeschnitten werden, so dass eine teilweise Entfernung der Daten der Tabelle ist alles möglich.
Objekttypen
Löschen kann innerhalb eines Clusters auf Tabellen und Tabellen angewendet werden. Kürzen gilt nur für Tabellen oder den gesamten Cluster. (Sein mögen Oracle-spezifisch)
Data Object Identität
Oracle
Löschen nicht das Datenobjekt-ID nicht beeinflusst, aber truncate ordnet ein neues Datenobjekt-ID es sei denn, hat es nie einen Einsatz gegen den Tisch, seit seiner Gründung Selbst ein einzelner Einsatz, die zurückgesetzt wird, verursachen eine neue Datenobjekt-ID auf Verkürzungs zugewiesen werden.
Rückblick (Oracle)
Rückblick funktioniert über Löschungen, aber ein truncate verhindert Rückblende zu den Zuständen vor der Operation.
Doch von 11gR2 der RüCKBLICK ARCHIV Funktion ermöglicht dies, außer in Express Edition
Verwendung von RüCKBLICK in Oracle http://docs.oracle.com/cd/ E11882_01 / appdev.112 / e41502 / adfns_flashback.htm # ADFNS638
Berechtigungen
Variable
Oracle
Löschen kann auf einen Tisch zu einem anderen Benutzer oder eine Rolle gewährt werden, aber gestutzt nicht ohne Verwendung eines DROP ANY TABLE Zuschusses werden kann.
Redo / Undo
Löschen erzeugt eine kleine Menge von Redo und eine große Menge an rückgängig zu machen. Kürzen erzeugt eine vernachlässigbare Menge von jedem.
Indizes
Oracle
Ein Abschneidevorgang unbrauchbar macht Indizes verwendbar wieder. Löschen nicht.
Fremdschlüssel
Ein truncate kann nicht angewendet werden, wenn ein Fremdschlüssel-Referenzen in der Tabelle aktiviert ist. Die Behandlung mit Lösch hängt von der Konfiguration des Fremdschlüssels.
Table Locking
Oracle
Kürzen erfordert eine exklusive Tabellensperre, löschen erfordert eine gemeinsame Tabellensperre. Daher Tabellensperren zu deaktivieren auf einem Tisch ist eine Art und Weise Leerungsoperationen zu verhindern.
Trigger
DML-Trigger nicht ausgelöst auf einem truncate.
Oracle
DDL-Trigger zur Verfügung.
Remote Execution
Oracle
Kürzen kann nicht über einen Datenbank-Link ausgegeben werden.
Identity Columns
SQL * Server
Kürzen setzt die Sequenz für die IDENTITY-Spaltentypen, nicht gelöscht.
Ergebnismenge
In den meisten Implementierungen eine DELETE
Anweisung an den Client die Zeilen zurückgeben kann, die gelöscht wurden.
z. in einer Oracle PL / SQL-Unterprogramm können Sie:
DELETE FROM employees_temp
WHERE employee_id = 299
RETURNING first_name,
last_name
INTO emp_first_name,
emp_last_name;
Andere Tipps
Der Unterschied zwischen truncate und löschen wird im Folgenden aufgeführt:
+----------------------------------------+----------------------------------------------+
| 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) |
+----------------------------------------+----------------------------------------------+
DROP
Der DROP-Befehl entfernt eine Tabelle aus der Datenbank. Alle Tische Zeilen, Indizes und Privilegien werden ebenfalls entfernt. Keine DML-Trigger werden gefeuert. Der Vorgang kann nicht mehr rückgängig gemacht werden.
TRUNCATE
TRUNCATE entfernt alle Zeilen aus einer Tabelle. Der Vorgang kann nicht mehr rückgängig gemacht werden und keine Trigger gefeuert werden. Als solches ist TRUCATE schneller und nicht so viel rückgängig gemacht Raum als DELETE verwenden.
DELETE
Der DELETE-Befehl wird verwendet, um Zeilen aus einer Tabelle zu entfernen. Eine WHERE-Klausel verwendet werden kann, entfernen nur einige Zeilen. Wenn keine WHERE-Bedingung angegeben ist, werden alle Zeilen entfernt. Nachdem ein Löschvorgang durchführen müssen Sie die Transaktion COMMIT oder ROLLBACK die Änderung dauerhaft zu machen oder sie rückgängig zu machen. Beachten Sie, dass dieser Vorgang wird alle DELETE-Trigger auf der Tabelle führen zu schießen.
Von: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands
Alle guten Antworten, auf die ich muss hinzufügen:
Da TRUNCATE TABLE
ist eine DDL ( Daten Defination Sprache ), kein DML ( Data Manipulation Langauge ) Befehl, nicht die Delete Triggers
nicht ausgeführt werden.
Zusammenfassung von Delete Vs Kürzen in SQL Server
Für die kompletten Artikel unter folgendem Link: http: // codaffection .com / sQL-Server-Artikel / löschen-vs-truncate-in-sQL-Server /
von Dotnet Mob Artikel Genommen: löschen Vs Truncate in SQL Server
Mit SQL Server oder MySQL, wenn es eine PK mit Autoinkrement ist, gestutzt wird der Zähler zurückgesetzt.
„Kürzen nichts log“ ist richtig. Ich würde noch weiter gehen:
Kürzen wird im Rahmen einer Transaktion nicht ausgeführt.
Der Geschwindigkeitsvorteil von truncate über löschen sollte klar sein. Dieser Vorteil reicht von trivial bis enorm, je nach Ihrer Situation.
Allerdings habe ich unfreiwillig gesehen truncate referentielle Integrität brechen und verletzen andere Einschränkungen. Die Macht, die Sie durch Ändern von Daten außerhalb einer Transaktion erhalten will, muß gegen die Verantwortung ausgeglichen werden, die Sie erben, wenn Sie den Drahtseilakt ohne Netz gehen.
Ja, DELETE ist langsamer, TRUNCATE ist schneller. Warum?
DELETE müssen die Datensätze, überprüfen Einschränkungen lesen, aktualisieren Sie den Block, zu aktualisieren Indizes und Redo generieren / rückgängig gemacht werden. All das braucht Zeit.
TRUNCATE paßt einfach einen Zeiger in der Datenbank für die Tabelle (die High-Water-Mark) und puh! die Daten weg.
Dies ist Oracle spezifisch, AFAIK.
TRUNCATE
ist die DDL-Anweisung während DELETE
eine DML-Anweisung ist. Im Folgenden sind die Unterschiede zwischen den beiden:
-
Als
TRUNCATE
ein DDL ist ( Datendefinitionssprache ) statement es nicht erfordern eine Verpflichtung, die Änderungen dauerhaft zu machen. Und das ist der Grund, warum von truncate gelöschten Zeilen nicht rollbacked werden können. Auf der anderen SeiteDELETE
ist eine DML ( Datenbearbeitungssprache ) Aussage daher ausdrücklich verpflichten, erfordert zu machen seine Wirkung dauerhaft. -
TRUNCATE
entfernt immer alle Zeilen aus einer Tabelle, die Tabelle leer und die Tabellenstruktur intakt gelassen wird, währendDELETE
bedingt entfernen, wenn die where-Klausel verwendet wird. -
Die Zeilen von
TRUNCATE TABLE
Anweisung gelöscht können nicht wiederhergestellt werden und Sie können die where-Klausel in derTRUNCATE
Anweisung nicht angegeben werden. -
TRUNCATE
Aussagen nicht Feuer löst ab aufDELETE
Anweisung auf DELETE-Trigger gegen
Hier ist die sehr gute Verbindung für das Thema relevant.
Wenn aus Versehen Sie alle Daten aus der Tabelle entfernt mit Löschen / Kürzen. Sie können engagierte Transaktion Rollback. Wiederherstellen der letzten Sicherung und Transaktionsprotokoll bis zu dem Zeitpunkt ausgeführt, wenn Löschen / Kürzen passieren wird.
Die zugehörigen Informationen unter einer Blog-Post
Während auf Datenbank arbeiten, verwenden wir löschen und Kürzen ohne zu wissen, die Unterschiede zwischen ihnen. In diesem Artikel werden wir diskutieren der Unterschied zwischen Löschen und Kürzen in Sql.
Löschen:
- Löschen ist ein DML-Befehl.
- Löschen Anweisung ausgeführt wird eine Zeilensperre verwendet wird, jede Zeile in der Tabelle zum Löschen gesperrt.
- Wir können angeben Filter in where-Klausel.
- Es löscht angegebene Daten, wenn in dem Zustand vorhanden ist.
- Löschen Aktivitäten einen Trigger, da der Betrieb einzeln angemeldet sind.
- Langsamer als Kürzen, weil es hält Protokolle
Kürzen
- Kürzen ist ein DDL-Befehl.
- Kürzen Tabelle die Tabelle und Seite immer sperren, aber nicht jedes row.As es alle Daten entfernt.
- Kann nicht Wo Bedingung verwenden.
- Es Entfernt alle Daten.
- Kürzen Tabelle kann einen Trigger nicht aktivieren, da der Vorgang nicht einzelne Zeilenlöschungen nicht einloggen.
- Faster in Leistung klug, weil sie halten keine Protokolle.
Hinweis: Löschen und Kürzen beide zurückgesetzt, wenn verwendet werden kann, mit Transaktion. Wenn Transaktion erfolgt ist, begangen bedeutet, dann können wir nicht Rollbacks Kürzen Befehl, aber wir können noch ein Rollback-Befehl löschen von Log-Dateien, wie löschen schreiben sie in Log-Datei im Fall zeichnet ist es benötigt in Zukunft aus den Log-Dateien rückgängig zu machen.
Wenn Sie eine Fremdschlüsselbedingung haben, die sich auf die Tabelle, die Sie trunkieren versuchen, funktioniert dies nicht, auch wenn die aufgerufene Tabelle nicht hat Daten enthält. Dies liegt daran, die Fremdschlüsselprüfung mit DDL erfolgt statt DML. Dies kann dazu gekommen werden, indem vorübergehend das Deaktivieren Fremdschlüssel (n) auf den Tisch.
Löschen Tabelle ist eine protokollierte Operation. So ist die Streichung jeder Reihe bekommt im Transaktionsprotokoll, protokolliert, die es langsam macht. Kürzt Tisch auch löscht alle Zeilen in einer Tabelle, aber es wird die Löschung nicht anmelden stattdessen jede Zeile es protokolliert die Aufhebung der Zuordnung der Datenseiten der Tisch, der macht es schneller.
~ Wenn aus Versehen Sie alle Daten aus der Tabelle entfernt mit Löschen / Kürzen. Sie können engagierte Transaktion Rollback. Wiederherstellung der letzte Sicherung und führte Transaktionsprotokoll bis zu dem Zeitpunkt, wenn Löschen / Truncate passieren wird.
In SQL Server 2005 Ich glaube, dass Sie können Rollback eine truncate
TRUNCATE kann wieder in einer Transaktion, wenn gewickelt wird gerollt.
Bitte beachten Sie die beiden Referenzen unten und testen Sie sich: -
Die TRUNCATE vs. DELETE ist eine der berüchtigten Fragen während SQL-Interviews. So stellen Sie sicher, dass Sie es erklären, richtig mit dem Interviewer oder es könnte Sie den Job kosten. Das Problem ist, dass nicht viele sind sich bewusst, so wahrscheinlich werden sie die Antwort als falsch betrachten, wenn Sie ihnen sagen, dass JA Kürzen zurückgerollt werden kann.
DELETE
Der DELETE-Befehl wird verwendet, um Zeilen aus einer Tabelle zu entfernen. Eine WHERE-Klausel verwendet werden kann, entfernen nur einige Zeilen. Wenn keine WHERE-Bedingung angegeben ist, werden alle Zeilen entfernt. Nachdem ein Löschvorgang durchführen müssen Sie die Transaktion COMMIT oder ROLLBACK die Änderung dauerhaft zu machen oder sie rückgängig zu machen. Beachten Sie, dass dieser Vorgang wird alle DELETE-Trigger auf der Tabelle führen zu schießen.
TRUNCATE
TRUNCATE entfernt alle Zeilen aus einer Tabelle. Der Vorgang kann nicht mehr rückgängig gemacht werden und keine Trigger gefeuert werden. Als solches ist TRUCATE schneller und nicht so viel rückgängig gemacht Raum als DELETE verwenden.
DROP
Der DROP-Befehl entfernt eine Tabelle aus der Datenbank. Alle Tische Zeilen, Indizes und Privilegien werden ebenfalls entfernt. Keine DML-Trigger werden gefeuert. Der Vorgang kann nicht mehr rückgängig gemacht werden.
DROP und TRUNCATE sind DDL-Befehle, während DELETE ist ein DML-Befehl. Daher DELETE-Operationen rückgängig gemacht werden können (rückgängig gemacht), während DROP und TRUNCATE-Operationen können nicht rückgängig gemacht werden.
Von: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands
Eine kleine Korrektur auf die ursprüngliche Antwort - löschen erzeugt auch erhebliche Mengen an Redo (wie Undo selbst durch Redo geschützt ist). Dies kann von Autotrace Ausgabe zu sehen:
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
Hier ist meine ausführliche Antwort auf die Differenz zwischen DELETE und TRUNCATE in SQL Server
• Entfernen Daten : Das erste, was zuerst, können sowohl die Zeilen aus der Tabelle zu entfernen, verwendet werden
.
Aber ein DELETE kann verwendet werden, um die Zeilen zu entfernen, nicht nur aus einer Tabelle, sondern auch aus einer Sicht oder das Ergebnis einer OPENROWSET oder OPENQUERY abhängig vom Provider Fähigkeit.
• FROM-Klausel : Mit DELETE Sie auch Zeilen aus einer Tabelle / View löschen / rowset_function_limited aus einer anderen Tabelle auf Zeilen basierend durch eine andere Klausel. In der FROM-Klausel können Sie auch schreiben normale Joinbedingungen. Eigentlich können Sie eine DELETE-Anweisung aus einer SELECT-Anweisung erstellen, die keine Aggregatfunktionen enthalten durch Ersetzen SELECT mit DELETE und Entfernen von Spaltennamen.
Mit TRUNCATE können Sie das nicht tun.
• WHERE : Ein TRUNCATE nicht haben kann, wo die Bedingungen, sondern ein löschen. Das bedeutet, dass mit TRUNCATE können Sie nicht eine bestimmte Zeile oder einer bestimmten Gruppe von Zeilen löschen. TRUNCATE TABLE auf die DELETE-Anweisung ohne WHERE-Klausel ähnlich ist.
• Performance : TRUNCATE TABLE ist schneller und weniger System und Transaktionsprotokoll Ressourcen verwendet. Und einer der Gründe ist Schlösser entweder durch Anweisungen verwendet. Die DELETE-Anweisung ausgeführt wird, eine Zeilensperre verwendet wird, jede Zeile in der Tabelle ist zum Löschen gesperrt. TRUNCATE TABLE immer sperrt die Tabelle und Seite aber nicht jede Zeile.
• Transaktionsprotokoll : DELETE-Anweisung entfernt Zeilen einen nach dem anderen und macht einzelne Einträge im Transaktionsprotokoll für jede Zeile
.
TRUNCATE TABLE löscht die Daten durch die Datenseiten Aufheben der Zuordnung verwendet, um die Tabellendaten zu speichern und Datensätze nur die Seite Zuordnungsaufhebungen im Transaktionsprotokoll.
• Seiten : Nach einer DELETE-Anweisung ausgeführt wird, nach wie vor die Tabelle leer Seiten enthält. TRUNCATE entfernt die Daten durch die Datenseiten Aufheben der Zuordnung verwendet, um die Tabellendaten zu speichern.
• Trigger : TRUNCATE nicht aktiviert die Lösch Auslöser auf dem Tisch. Sie müssen also sehr vorsichtig sein, während TRUNCATE verwendet wird. Man soll nie eine TRUNCATE verwenden, wenn DELETE-Trigger auf der Tabelle definiert ist eine automatische Bereinigung oder Protokollierung Aktion zu tun, wenn Zeilen gelöscht werden.
• Identity Spalte : Mit TRUNCATE, wenn die Tabelle eine Identitätsspalte enthält, wird der Zähler für diese Spalte auf den Startwert zurückgesetzt wird für die Spalte definiert. Wenn kein Saatgut definiert wurde, wird der Standardwert 1 verwendet. DELETE nicht die Identität Zähler zurückgesetzt. Also, wenn Sie die Identität Zähler beibehalten möchten, verwenden Sie stattdessen DELETE.
• Replikation :. DELETE kann gegen Tabelle in der Transaktionsreplikation verwendet werden oder Mergereplikation
Während TRUNCATE kann nicht gegen die in der Transaktionsreplikation oder Mergereplikation beteiligten Tabellen verwendet werden.
• Zurücksetzen : DELETE-Anweisung kann rückgängig gemacht werden
.
TRUNCATE kann auch vorgesehen gerollt wird wieder wird es in einem Transaktionsblock eingeschlossen und Sitzung nicht geschlossen ist. Sobald Sitzung geschlossen wird man nicht in der Lage sein TRUNCATE rückgängig zu machen.
• Einschränkungen : Die DELETE-Anweisung fehlschlagen, wenn es einen Trigger verletzt oder versucht, eine Reihe von Daten in einer anderen Tabelle mit einer FOREIGN KEY-Einschränkung verwiesen zu entfernen. Wenn die DELETE mehr Zeilen entfernt, und eine der entfernt Reihen gegen einen Trigger oder Einschränkung, wird die Anweisung abgebrochen, wird ein Fehler zurückgegeben, und keine Zeilen werden entfernt.
Und wenn DELETE gegen Ansicht verwendet wird, muss diese Ansicht eine aktualisierbare Ansicht sein.
TRUNCATE kann nicht gegen die in indizierte Sicht verwendet Tabelle verwendet werden.
TRUNCATE kann nicht gegen die durch eine FOREIGN KEY-Einschränkung referenzierte Tabelle verwendet werden, es sei denn, eine Tabelle, die einen Fremdschlüssel, dass Verweise selbst hat.
Der größte Unterschied ist, dass truncate nicht protokollierter Betrieb ist, während löschen ist.
Einfach bedeutet dies, dass im Falle eines Datenbankabsturz, können Sie die Daten nicht auf von truncate betrieben erholen, aber mit löschen Sie können.
Weitere Details hier
DELETE-Anweisung: Dieser Befehl löscht nur die Zeilen aus der Tabelle auf der Grundlage der gegebenen Bedingung in der where-Klausel oder löscht alle Zeilen aus der Tabelle, wenn keine Bedingung angegeben ist. Aber es nicht den Platz frei die die Tabelle enthält.
Die Syntax eines SQL-DELETE-Anweisung lautet:
DELETE FROM tabelle [WHERE Bedingung];
TRUNCATE-Anweisung. Mit diesem Befehl kann alle Zeilen aus der Tabelle löschen und den Platz freigeben, die Tabelle mit
Löschen
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]
TRUNCATE
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]
Für weitere Informationen besuchen
http://www.zilckh.com / was-ist-der-Differenz-zwischen-truncate-and-löschen /
Ein weiterer Unterschied der beiden Operationen ist, dass, wenn die Tabelle eine Identitätsspalte enthält, wird der Zähler für diese Spalte zurückgesetzt 1 (oder dem Wert Samen für die Spalte definiert ist) unter TRUNCATE. DELETE nicht über diese beeinflussen.
Kurz gesagt, gestutzt nichts log (so viel schneller ist, aber kann nicht rückgängig gemacht werden), während Lösch angemeldet ist (und kann Teil einer größeren Transaktion sein wird usw. Rollback). Wenn Sie Daten, die Sie in dev nicht in einer Tabelle wollen, ist es in der Regel besser abschneiden, da Sie nicht das Risiko des Auffüllens des Transaktionsprotokolls ausgeführt
Ein großer Grund ist es praktisch ist, ist, wenn Sie die Daten in einer Multi-Millionen-Reihe Tabelle müssen auffrischen, aber nicht wollen, es wieder aufzubauen. „Löschen *“ ewig dauern würde, während der Perfomance Auswirkungen von Truncate vernachlässigbar wäre.
Kann nicht tun DDL über einen dblink.
ich auf Matthieus Beitrag kommentieren würde, aber ich habe nicht die rep noch ...
In MySQL, der Auto-Increment-Zähler wird mit truncate zurückgesetzt, aber nicht mit löschen.
Es ist nicht so truncate nicht alles in SQL Server anmelden. truncate keine Informationen melden Sie sich aber die Aufhebung der Zuordnung von Datenseite für die Tabelle einzuloggen, auf dem Sie TRUNCATE gebrannt.
und verkürzten Datensatz kann ein Rollback, wenn wir Transaktion zu Beginn definieren, und wir können die abgeschnittenen Datensatz nach Rollback es wiederherzustellen. Aber kann nicht wiederhergestellt werden abgeschnittene Datensätze aus der Transaktionsprotokollsicherung nach begangen abgeschnitten Transaktion.
Kürzen kann auch hier das Beispiel Rollbacked werden
begin Tran
delete from Employee
select * from Employee
Rollback
select * from Employee
Kürzen und Löschen in SQL sind zwei Befehle, die verwendet wird, um Daten aus der Tabelle zu entfernen oder zu löschen. Obwohl recht einfach in der Natur sowohl SQL-Befehle können viele Probleme schaffen, bis Sie mit Details vertraut sind, bevor es zu benutzen. Eine falsche Wahl der Befehl kann zur Folge haben entweder sehr langsam oder kann blies sogar Logsegment auf, wenn zu viele Daten entfernt werden muss und Logsegment ist nicht genug. Deshalb ist es wichtig, zu wissen, wann truncate verwenden und Befehl in SQL löschen, aber bevor diese verwenden, sollten Sie kennen die Unterschiede zwischen Kürzen und Löschen, und basierend auf sie, sollten wir in der Lage sein, um herauszufinden, wenn DELETE bessere Option ist für das Entfernen Daten oder TRUNCATE sollten spülen Tabellen verwendet werden.
Siehe überprüfen hier klicken
Durch eine TRUNCATE TABLE-Anweisung der Ausgabe, die Sie anweist, SQL Server jeden Datensatz in einer Tabelle zu löschen, ohne die Protokollierung oder Transaktionsverarbeitung stattfindet.
DELETE-Anweisung kann eine WHERE-Klausel müssen bestimmte Datensätze zu löschen, während TRUNCATE-Anweisung erfordert keine und wischt die gesamte Tabelle. Wichtig ist, dass die DELETE-Anweisung meldet sich das gelöschte Datum während der TRUNCATE-Anweisung nicht.
Ein weiterer Unterschied spezifisch für Microsoft SQL Server mit delete
ist Sie output
Anweisung verwenden können, um zu verfolgen, welche Datensätze gelöscht wurden, z.
delete from [SomeTable]
output deleted.Id, deleted.Name
Sie können dies nicht mit truncate
.
Kürzen Befehl die Tabelle neu initialisieren verwendet wird, ist es ein DDL-Befehl, der alle Zeilen von table.Whereas löschen Löschen ein DML-Befehl, der verwendet wird Zeile oder Gruppe von Zeilen gemäß einer Bedingung zu löschen, wenn die Bedingung nicht festgelegt ist, dann wird dieser Befehl alle Zeilen aus der Tabelle löschen.