was ist der unterschied zwischen truncate und delete in sql?
<p>ich habe eine antwort auf diese frage aus versehen als antwort auf eine frage nach dem unterschied zwischen <code>drop</code> und <code>truncate</code> verfasst, aber ich dachte, dass es eine schande ist, nicht zu teilen, deshalb werde ich meine eigene antwort auf meine eigene frage posten ... ist das sogar ethisch? :)</p><p>bearbeiten: wenn ihre antwort plattformspezifisch ist, können sie das bitte angeben.</p>
<p>hier ist eine liste der unterschiede. ich habe oracle-spezifische funktionen hervorgehoben, und hoffentlich kann die community auch den unterschied anderer anbieter hinzufügen. unterschiede, die bei den meisten anbietern üblich sind, können direkt unter den überschriften gehen, wobei die unterschiede unten hervorgehoben werden.</p><p><hr></p><h1>gesamtübersicht</h1><p>wenn sie alle zeilen schnell aus einer tabelle löschen möchten und wirklich sicher sind, dass sie dies tun möchten und keine fremdschlüssel für die tabellen haben, ist ein truncate wahrscheinlich schneller als ein delete .</p><p>verschiedene systemspezifische aspekte müssen berücksichtigt werden, wie im folgenden beschrieben.</p><p><hr></p><h1>anweisungstyp</h1><p>löschen ist dml, truncate ist ddl</p><p><hr></p><h1>commit und rollback</h1><p>variabel nach anbieter</p><p><strong>sql server</strong></p><p>abschneiden kann zurückgesetzt werden.</p><p><strong>postgresql</strong></p><p>abschneiden kann zurückgesetzt werden.</p><p><strong>oracle</strong></p><p>da ein truncate ddl ist, sind zwei commits vor und nach der ausführung der anweisung erforderlich. abschneiden kann daher nicht rückgängig gemacht werden, und ein fehler im abgeschnittenen prozess hat ohnehin ein commit ausgelöst.</p><p>siehe jedoch flashback weiter unten.</p><p><hr></p><h1>weltraumgewinnung</h1><p>löschen stellt keinen speicherplatz wieder her, truncate stellt speicherplatz wieder her</p><p><strong>oracle</strong></p><p>wenn sie die klausel reuse storage verwenden, werden die datensegmente nicht freigegeben. dies kann geringfügig effizienter sein, wenn die tabelle mit daten erneut geladen werden soll. die hochwassermarke wird zurückgesetzt.</p><p><hr></p><h1>zeilenumfang</h1><p>löschen kann zum entfernen aller zeilen oder nur einer teilmenge von zeilen verwendet werden. abschneiden entfernt alle zeilen.</p><p><strong>oracle</strong></p><p>wenn eine tabelle partitioniert ist, können die einzelnen partitionen isoliert abgeschnitten werden, sodass eine teilweise entfernung aller tabellendaten möglich ist.</p><p><hr></p><h1>objekttypen</h1><p>löschen kann auf tabellen und tabellen innerhalb eines clusters angewendet werden. abschneiden gilt nur für tabellen oder den gesamten cluster. (kann oracle-spezifisch sein)</p><p><hr></p><h1>datenobjektidentität</h1><p><strong>oracle</strong></p><p>das löschen wirkt sich nicht auf die datenobjekt-id aus. abschneiden weist jedoch eine neue datenobjekt-id zu. <em>sofern nicht</em> die tabelle hat seit ihrer erstellung noch nie eine einfügung vorgenommen. selbst eine einzelne zurückgesetzte einfügung führt zu einem neuen datenobjekt id, die beim abschneiden zugewiesen werden soll.</p><p><hr></p><h1>flashback (oracle)</h1><p>flashback funktioniert über alle löschvorgänge hinweg, ein abschneiden verhindert jedoch, dass der status vor der operation zurückgesetzt wird.</p><p>ab 11gr2 erlaubt dies die flashback archive-funktion, außer in der express edition</p><p> <a href="https://stackoverflow.com/questions/25950145/use-of-flashback-in-oracle">verwendung von flashback in oracle</a> <a href="http://docs.oracle.com/cd/e11882\_01/appdev.112/e41502/adfns\_flashback.htm#adfns638">http://docs.oracle.com/cd/e11882\_01/appdev.112/e41502/adfns\_flashback.htm#adfns638</a> </p><p><hr></p><h1>privilegien</h1><p>variable</p><p><strong>oracle</strong></p><p>das löschen kann für eine tabelle für einen anderen benutzer oder eine andere rolle erteilt werden, das abschneiden kann jedoch nicht ohne die drop any table-zuweisung erfolgen.</p><p><hr></p><h1>wiederholen rückgängig</h1><p>löschen erzeugt eine kleine anzahl von wiederholungen und eine große menge von rückgängig. abschneiden erzeugt jeweils eine vernachlässigbare menge.</p><p><hr></p><h1>indizes</h1><p><strong>oracle</strong></p><p>ein abgeschnittener vorgang macht unbrauchbare indizes wieder verwendbar. löschen geht nicht.</p><p><hr></p><h1>fremde schlüssel</h1><p>eine kürzung kann nicht angewendet werden, wenn ein aktivierter fremdschlüssel auf die tabelle verweist. die behandlung mit löschen hängt von der konfiguration der fremdschlüssel ab.</p><p><hr></p><h1>tischverriegelung</h1><p><strong>oracle</strong></p><p>das abschneiden erfordert eine exklusive tabellensperre, das löschen eine gemeinsame tabellensperre. durch das deaktivieren von tabellensperren können sie das abschneiden von operationen in einer tabelle verhindern.</p><p><hr></p><h1>löst aus</h1><p>dml-trigger werden nicht bei einem abschneiden ausgelöst.</p><p><strong>oracle</strong></p><p>ddl-trigger sind verfügbar.</p><p><hr></p><h1>remote-ausführung</h1><p><strong>oracle</strong></p><p>abschneiden kann nicht über eine datenbankverknüpfung ausgegeben werden.</p><p><hr></p><h1>identitätsspalten</h1><p><strong>sql server</strong></p><p>abschneiden setzt die reihenfolge für identity-spaltentypen zurück, löschen nicht.</p><p><hr></p><h1>ergebnis gesetzt</h1><p>in den meisten implementierungen kann eine <code>delete</code>-anweisung die gelöschten zeilen an den client zurückgeben.</p><p>z.b. in einem oracle pl/sql-unterprogramm können sie:</p><pre><code>delete from employees\_temp where employee\_id = 299 returning first\_name, last\_name into emp\_first\_name, emp\_last\_name; </code></pre>
[was versteht man unter einer begegnung der 1. und 2. art?](http://www.gutefrage.net/frage/was-versteht-man-unter-einer-begegnung-der-1-und-2-art)


da findest du deine Antwort vielleicht...


Lg Nivis Unterschreib so wie du auch normal schreibst - bei mir ist das z.B. eine mischung aus schreib- und druckschrift. nur wenn es explizit angegegben ist in Druckschrift zu schreiben musst du das auch tun.


LG lena Also ich kann nur für mich sprechen; Aber Du solltest auf dein Gefühl hören! Leider habe ich die Erfahrung gemacht ,dass bei mir dieser Gefühl, der Sinn immer auch stimmte!Jeder Mensch benimmt sich anders wenn er fremd geht, man kann also nicht genau sagen woran man es wirklich merkt!Ich würde mir lieber die Frage stellen, wenn er fremd geht, willst Du es dann WISSEN? Und was willst Du dann tun, TRENNST DU DICH? Oder willst Du Ihm vergeben, kannst Du damit LEBEN? Darüber solltest Du Dir erstmal Klarheit verschaffen!Und dann gehst Du deinen Entschluss nach, wie auch immer er ausfällt! Wenn Du es wissen willst ,dann gehst Du zu seiner Arbeit schaust ob er wirklich da ist, wenn nicht hat dein Gefühl wohl Recht! Viel Glück und ich hoffe für Dich ,dass dein Gefühl nicht stimmt! Um Dir richtig helfen zu können, musst du erst mal einige Hintergründe nennen, warum ihr euch getrennt habt. Ist schwer, Dir jetzt eine Antwort zu geben, aber wichtig ist immer, noch einmal über diese Sache zu reden, vieleicht ist dann noch etwas zu retten. <p>erwägen sie die verwendung eines <strong> mehrfachauswahl-designs mit token </strong>. die filter-as-you-type-funktion ist nett, aber nicht unbedingt erforderlich. diese funktionieren gut, wenn im allgemeinen anwendungsfall entweder einer oder nur wenige ausgewählt werden. die benutzerfreundlichkeit nimmt jedoch schnell ab, wenn sie viele auswählen müssen, da der benutzer das menü für jedes element erneut aufrufen muss.</p><p><img src="https://i.stack.imgur.com/fth7o.png" alt="multi-select with tokens, via harvesthq.github.com/chosen"></p><ul> <li> <a href="http://harvesthq.github.com/chosen/">http://harvesthq.github.com/chosen/</a> </li> <li> <a href="http://designingwebinterfaces.com/the-multi-select-solution">http://designingwebinterfaces.com/the-multi-select-solution</a> </li> <li> <a href="http://loopj.com/jquery-tokeninput/">http://loopj.com/jquery-tokeninput/</a> </li> </ul><p>sie haben die tokenisierte mehrfacheingabemethode bereits in ihren e-mail-clients gesehen. <img src="https://i.stack.imgur.com/h1aid.png" alt="multi-select-tokens in email"></p><p>wenn häufig mehrere ausgewählt werden, können sie ein kontrollkästchenmenü <strong> </strong> in betracht ziehen. der unterschied besteht darin, dass das dropdown-menü über alle klicks hinweg dauerhaft bleibt (und die mehrfachauswahl visuell kommuniziert). daher kann der benutzer mit klick-klick-klick schnell mehrere elemente auswählen. für unsere web-app möchten wir dieses design durch hinzufügen der token-funktionalität verbessern.</p><p><img src="https://i.stack.imgur.com/zqizh.png" alt="checkbox menu, via realestate.com.au"></p><ul> <li> <a href="http://www.realestate.com.au/">http://www.realestate.com.au/</a> </li> <li> <a href="http://blogfreakz.com/jquery/jquery-dropdown-check-list/">http://blogfreakz.com/jquery/jquery-dropdown-check-list/</a> </li> </ul> <p>es gibt optionen, die ihnen dabei helfen:</p><pre><code> --insert-ignore insert rows with insert ignore. --replace use replace into instead of insert into. -t, --no-create-info don't write table creation info. </code></pre><p>denken sie an dieses paradigma</p><ul> <li>mysqldump alles von db1 in dump1</li> <li>laden sie dump1 in db3</li> <li>mysqldump alles aus db2 mit --replace (oder --insert-ignore) und --no-create-info in dump2</li> <li>laden sie dump2 in db3</li> </ul> Die fehlende Sortierung eingehender Mails externer Konten ist nicht allgemein ein Problem im Webmail von Swisscom, sondern ein scheinbar ganz speziell bezogenes auf Microschrott.


 


Soviel zu dem, aber eben es gäbe sicher andere Lösungen.



<https://www.tuxone.ch>  
Falls du in deinem Thread eine Antwort von Tux0ne wünschst, so ergänze deinen Text mit @Tux0ne. Damit erhalte ich eine Benachrichtigung. dazu gibt es zwischenzeitlich eine stellungnahme :
https://discussions.tomtom.com/de/discussion/comment/1651174/#comment\_1651174 Wenn eine Spalte in der Datenbank nullfähig ist, hat die Ergebnisklasse auch eine nullfähige Eigenschaft. 

 Wenn beispielsweise eine `Order` eine `Datetime` Spalte mit dem Namen `CreatedDate` , sieht die resultierende `Order` Klasse in etwa wie folgt aus: 


```
public partial class Order: EntityObject
{
  ...
  private DateTime? _createdDate;
  ...
}

```
  Wenn \_ `createdDate` keinen Wert hat, wenn Sie `ObjectContext.SaveChanges()` aufrufen, wird eine `System.DBNull` automatisch als Teil des Befehls insert oder update an die Datenbank gesendet. 

 Hoffe das hilft Alex hallo @noname, willkommen in der neuen community.schade, dass du dein konto löschen möchtest.die löschung vom joyn und community account habe ich soeben veranlasst.wundere dich bitte nicht, dass neben der bestätigung zu löschung auch eine kurze information kommt, um eventuell bestehende newsletter abzumelden.liebe grüße,robert.