Database Reference
In-Depth Information
Nun müssen wir noch ein Array mit Farbangaben zum gewünschten Feiertag
hinzufügen. Leider können wir einen View nicht direkt aktualisieren.
UPDATE holidays SET colors = '{"red","green"}' where name = 'Christmas Day' ;
ERROR: cannot update a view
HINT:
You need an unconditional ON UPDATE DO INSTEAD rule.
Sie so aus, als würden wir eine Regel ( RULE ) benötigen.
Regeln (RULEs)
Eine Regel ( RULE ) beschreibt, wie der geparste Query-Baum modifiziert wer-
den soll. Jedes Mal, wenn Postgres eine SQL-Anweisung ausführt, wandelt
es diese Anweisung zuerst in einen Query-Baum (allgemein auch abstrakter
Syntax-Baum genannt) um. Dieser Prozess wird als Parsing bezeichnet.
Operatoren und Werte werden in diesem Baum zu Zweigen und Blättern,
und vor der Ausführung wird er durchgegangen und beschnitten und auf
andere Weise bearbeitet. Dieser Baum kann optional über Postgres-Regeln
ungeschrieben werden, bevor er an den Query-Planer weitergegeben wird (der
den Baum so umschreibt, dass er optional ausgeführt wird), und er leitet
diesen letzten Befehl dann zur Ausführung weiter. Siehe Abbildung 5, Wie
SQL bei PostgreSQL ausgeführt wird , auf Seite 36. Mehr noch, ein VIEW wie
holidays ist eine Regel.
Wir können das nachweisen, indem wir uns den Ausführungsplan des holi-
days -Views mit dem EXPLAIN -Befehl ansehen ( Filter ist die WHERE -Klausen und
Output die Spaltenliste).
EXPLAIN VERBOSE
SELECT *
FROM holidays;
QUERY PLAN
-----------------------------------------------------------------------------------
Seq Scan on public.events (cost=0.00..1.04 rows=1 width=57)
Output: events.event _ id, events.title, events.starts, events.colors
Filter: ((events.venue _ id IS NULL) AND ((events.title)::text ~~ '%Day%'::text))
Vergleichen Sie das über EXPLAIN VERBOSE mit der Query, die wir für unseren
holidays - VIEW nutzen. Sie sind funktional identisch.
EXPLAIN VERBOSE
SELECT event _ id AS holiday _ id,
title AS name, starts AS date , colors
FROM events
WHERE title LIKE '%Day%' AND venue _ id IS NULL;
Search WWH ::




Custom Search