


{"id":156,"date":"2010-10-11T08:21:56","date_gmt":"2010-10-11T06:21:56","guid":{"rendered":"http:\/\/lwibs01.gm.fh-koeln.de\/blogs\/sqlexpert\/?p=156"},"modified":"2010-10-14T15:58:31","modified_gmt":"2010-10-14T13:58:31","slug":"fallstricke-kapitel-10-teil2","status":"publish","type":"post","link":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/2010\/10\/11\/fallstricke-kapitel-10-teil2\/","title":{"rendered":"Fallstricke, Kapitel 10, Teil 2"},"content":{"rendered":"<h3>Wann sind Views \u00e4nderbar?<\/h3>\n<ol>\n<li> Die zur\u00fcckliegenden Constraints (z.B. not null) m\u00fcssen erf\u00fcllt sein, d.h. z.B. alle not null Spalten in der View enthalten sein und auch der Primary Key. Das gilt nicht f\u00fcr die zugrunde liegenden Where-Klausel, d.h.Daten, die der Where-Klausel der view nicht entsprechen, sind zwar nach einem insert in die View nicht in der View\u00a0 selber sichtbar, aber in der zugrunde liegenden Tabelle.<\/li>\n<li>Die View darf weder ein GROUP BY, noch ein DISTINCT noch einen Subselect enthalten.<\/li>\n<li>Die View darf keine hierarchische Abfrage (connect-by) enthalten<\/li>\n<li>Die View darf keinen ALias oder eine konkatenierte Spalte enthalten.<\/li>\n<li>siehe auch <a href=\"http:\/\/sql-plsql-de.blogspot.com\/2009\/07\/views-und-dml-operationen-updatable.html\">Carski<\/a><\/li>\n<li>Wenn eine View den Status &#8218;INVALID&#8216; hat, kann sie mit ALTER VIEW &#8230; COMPILE; wieder \u00fcbersetzt werden.<\/li>\n<li>Spalten in views, die durch eine Funktion berechnet werden, m\u00fcssen mit  einem Spaltennamen versehen werden.: CREATE VIEW TEST as SELECT  to_CHAR(XYZ) Spaltename\u00a0 FROM Tabelle; der Spaltenname ist obligatorisch.<\/li>\n<\/ol>\n<h3>CONSTRAINTS und Synonyme<\/h3>\n<ol>\n<li>Wenn man eine Tabelle l\u00f6scht, werden alle CONSTRAINTS und Indizes, die an der Tabelle h\u00e4ngen gel\u00f6scht. Die Views und Synonyme dagegen bleiben erhalten und werden nur in der Data Dictionary-View user_objects mit dem Status &#8218;INVALID&#8216; gekennzeichnet.<\/li>\n<li>Zu den Synonymen gibt es schon einen edb-Onlien-Lexikon-Eintrag:<a href=\"http:\/\/wikis.gm.fh-koeln.de\/wiki_db\/Datenbanken\/Synonyme\">Synonyme im Datenbankwiki.<\/a>. Dort werden auch die verschiedenen Namensr\u00e4ume unter Oracle beschrieben.<\/li>\n<\/ol>\n<h3>Indexe und deren Gebrauch<\/h3>\n<ol>\n<li>Ein Index wird genutzt, wenn die Spalte in einer WHERE-Klausel oder einer ORDER-BY-Klausel auftaucht.<\/li>\n<li>Am schnellsten ist ein Zugriff \u00fcber &#8222;=&#8220;, gr\u00f6\u00dfer als, kleiner funktioniert (in Abh\u00e4ngigkeit von den Daten) nicht immer, &lt;&gt; kann durch den Index <strong>nie <\/strong>ausgewertet werden.<\/li>\n<li>LIKE involviert den Index im allgemeinen :-(, wenn der Like-Ausdruck nicht mit einem Wildcard\u00a0 LIKE\u00a0 &#8218;%muster &#8218;\u00a0 beginnt.<\/li>\n<li>Eine Funktion wie abs(spalte) setzt den Index au\u00dfer Kraft, es sein denn, es existiert ein funktionsbasierter INDEX z.B. : CREATE INDEX name on UPPER(spalte);<\/li>\n<li>Seit Oracle 9 gibt es ein automatisches SKIP SCANNING, das daf\u00fcr sorgt, dass bei einem zusammengesetzten  Index (combined Index) mit mehr als einer Spalte der Index auch genutzt wird, wenn die erste Spalte in der WHERE-Klausel <strong>nicht <\/strong>enthalten ist. Das SKIP SCANNING ist immer automatisch eingeschaltet. (siehe: <a href=\"http:\/\/www.oracle-base.com\/articles\/9i\/IndexSkipScanning.php\">SKIP Scannning <\/a>)<\/li>\n<li>Ein UNIQE INDEX ignoriert NULL -Werte, d. h. eine Spalte, auf der ein UNIQUE INDEX liegt, darf NULL-Werte haben.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Wann sind Views \u00e4nderbar? Die zur\u00fcckliegenden Constraints (z.B. not null) m\u00fcssen erf\u00fcllt sein, d.h. z.B. alle not null Spalten in der View enthalten sein und auch der Primary Key. Das gilt nicht f\u00fcr die zugrunde liegenden Where-Klausel, d.h.Daten, die der Where-Klausel der view nicht entsprechen, sind zwar nach einem insert in die View nicht in&#8230;  <a href=\"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/2010\/10\/11\/fallstricke-kapitel-10-teil2\/\" class=\"more-link\" title=\"Read Fallstricke, Kapitel 10, Teil 2\"><?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":[253],"tags":[323,272,289,326,306,327,325,267,273,324,271,322,296],"class_list":["post-156","post","type-post","status-publish","format-standard","hentry","category-10-creating-schema-objects","tag-constraint","tag-distinct","tag-group-by","tag-index","tag-insert","tag-like","tag-namensraum","tag-null","tag-select","tag-subselect","tag-unique","tag-view","tag-where"],"acf":[],"_links":{"self":[{"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/posts\/156","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=156"}],"version-history":[{"count":40,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/posts\/156\/revisions"}],"predecessor-version":[{"id":370,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/posts\/156\/revisions\/370"}],"wp:attachment":[{"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/media?parent=156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/categories?post=156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/tags?post=156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}