


{"id":240,"date":"2010-10-05T08:46:07","date_gmt":"2010-10-05T06:46:07","guid":{"rendered":"http:\/\/lwibs01.gm.fh-koeln.de\/blogs\/sqlexpert\/?p=240"},"modified":"2010-10-14T16:06:29","modified_gmt":"2010-10-14T14:06:29","slug":"besonderheiten-kapitel-15","status":"publish","type":"post","link":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/2010\/10\/05\/besonderheiten-kapitel-15\/","title":{"rendered":"Besonderheiten Kapitel 15"},"content":{"rendered":"<h3>Multitable INSERT<\/h3>\n<ol>\n<li>Neben den bekannten M\u00f6glichkeiten, per SUBQUERY in einem CREATE TABLE-Befehl, einem INSERT , UPDATE oder DELETE gro\u00dfe Datenmengen in einem Befehl zu \u00e4ndern, gibt es noch den MULTITABLE INSERT (Oracle spezifisch) und den MERGE-Befehl (SQL-Standard).<\/li>\n<li>Mit dem Multi Tabler INSERT k\u00f6nnen verschiedene Tabellen gleichzeitig mit dem Ergebnis einer Unterabfrage unter einer WHEN-Bedingung gef\u00fcllt werden.<\/li>\n<li>Der MULTITABLE INSERT bietet drei M\u00f6glichkeiten\n<ol>\n<li>ALL: Ohne WHEN-Bedingung werden mehrere Tabellen mit den Daten aus einer Unterabfrage gef\u00fcllt (Seite 572)<\/li>\n<li>FIRST: Nur die erste WHEN ELSE-Klausel wird ber\u00fccksichtigt (Seite 575)<\/li>\n<li>ALL geht auch beim matchen einer WHEN-Bedingung alle weiteren WHENs durch, wobei FIRST bei dem ersten match aufh\u00f6rt<\/li>\n<\/ol>\n<ol>\n<li>Multiple WHEN-Klauseln ohne ALL und FIRST: Je nach Bedingung sind verschiedene INSERTS in unterschiedliche Tabellen m\u00f6glich (S. 576)<\/li>\n<\/ol>\n<\/li>\n<li>Die Unterabfrage beim MULTITABLR-INSERT ist unverzichtbar.<\/li>\n<li>Table-Alias aus einer Subquery k\u00f6nnen nicht im INSERT verwendet werden, statt dessen sind Spaltennamen erforderlich (siehe Seite 579)<\/li>\n<li>Wenn ein Multi Table INSERT fehlschl\u00e4gt, wird die komplette Anweisung zur\u00fcckgerollt.<\/li>\n<\/ol>\n<h3>MERGE<\/h3>\n<ol>\n<li>MERGE ist ein DML-Befehl, mit dem man einen INSERT, einen UPDATE und einen DELETE-Befehl gleichzeitig ausf\u00fchren kann. (Syntax: Seite 583).<\/li>\n<li>USING &#8230; ON &#8230; w\u00e4hlt \u00e4hnlich wie bei einem JOIN die Tabellen, VIEW\u00a0 bzw. die Unterabfrage aus, die als Quelle f\u00fcr die MERGE-Anweisung genutzt werden soll.<\/li>\n<li>\u00c4hnlich wie beim Multi-Table INSERT gibt es WHEN-MATCHED-Klauseln, die spezifizieren, wann eine UPDATE und wann eine INSERT erfolgen soll.<\/li>\n<li>Die DELETE-Klausel ist Bestandteil des UPDATE-Asts, d.h. wird nur ausgef\u00fchrt, wenn die Daten vorher durch UPDATE ge\u00e4ndert wurden und dann zus\u00e4tzlich die zugeh\u00f6rige DELETE-WHERE-Klausel greift.<\/li>\n<\/ol>\n<h3>FLASH-BACK-Query<\/h3>\n<ol>\n<li>Mit diesem Abfrage -Type k\u00f6nnen Daten aus der Vergangenheit abgefragt werden.<\/li>\n<li>Mit AS OF in SELECT k\u00f6nnen Daten abgefragt werden, die durch einen Zeitstempel in der Vergangenheit oder durch eine SCN gekennzeichnet werden.<\/li>\n<li>SELECT * FROM Test AS OF TIMESTAMP SYSTIMESTAMP &#8211; INTERVAL(0 0:01:30&#8242; DAY to second fragt die Daten ab, die vor 0 Tagen, 0 Stunden, einer Minute und 30 Sekunden in der Tabelle Test standen.<\/li>\n<li>Das geht auch noch auf andere Weise&#8230; muss hier noch erg\u00e4nzt werden, z. B. VERSIONS BETWEEN(Seite 594)<\/li>\n<li>Unter V$SYSTEM_PARAMETER gibt es mehrere undo-Parameter, unter anderem undo_retention. In undo_retention\u00a0 wird die Zeit in Sekunden gespeichert, bis zu der historische Daten abgefragt werden k\u00f6nnen. M\u00f6glich sind mehrere Minuten bis zu evt. mehrere Stunden. Jedoch steigt dadurch nat\u00fcrlich der Speicherplatzbedarf immens.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Multitable INSERT Neben den bekannten M\u00f6glichkeiten, per SUBQUERY in einem CREATE TABLE-Befehl, einem INSERT , UPDATE oder DELETE gro\u00dfe Datenmengen in einem Befehl zu \u00e4ndern, gibt es noch den MULTITABLE INSERT (Oracle spezifisch) und den MERGE-Befehl (SQL-Standard). Mit dem Multi Tabler INSERT k\u00f6nnen verschiedene Tabellen gleichzeitig mit dem Ergebnis einer Unterabfrage unter einer WHEN-Bedingung gef\u00fcllt&#8230;  <a href=\"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/2010\/10\/05\/besonderheiten-kapitel-15\/\" class=\"more-link\" title=\"Read Besonderheiten Kapitel 15\"><?php _e(\"Read more &raquo;\",\"wpbootstrap\"); ?><\/a><\/p>\n","protected":false},"author":23,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[258],"tags":[359,308,333,306,356,358,336,355,307,360,357],"class_list":["post-240","post","type-post","status-publish","format-standard","hentry","category-15-large-data-sets","tag-as-of","tag-delete","tag-flashback","tag-insert","tag-merge","tag-multitable-insert","tag-scn","tag-unteranfrage","tag-update","tag-versions-between","tag-when"],"acf":[],"_links":{"self":[{"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/posts\/240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/comments?post=240"}],"version-history":[{"count":20,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/posts\/240\/revisions"}],"predecessor-version":[{"id":373,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/posts\/240\/revisions\/373"}],"wp:attachment":[{"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/media?parent=240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/categories?post=240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/tags?post=240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}