sowohl als auch
angenommen, erstmal wäre mein View eine Abfrage der Tabellen A Spalte 1, B Spalte 2 und C Spalte 3. Irgendwann zur Laufzeit ändert ein pgplsql Programm oder ein anderer Client die Definition des Views (REPLACE): jetzt ist es eine Abfrage der Tabellen E,F und G.
Das NOTIFY soll natürlich bei dem REPLACE gesendet werden, darüberhinaus aber auch, wenn sich irgendwas an den Daten der zugrundeliegenden Tabellen ändert. Dann möglichst sogar mit der Information, welche Zeile sich geändert hat…
Ich will versuchen, das durch etwas nähere Erklärung zu verdeutlichen:
in meiner Datenbank gibt es verschiedene Tabellen, in denen items verschiedenen Typs gespeichert sind. Gemeinsam haben sie aber alle eine Information id,x,y,rot,color (id ist global unique, da durch Sequenz erzeugt)
In meinem Qt Programm werden die auf einer Grafik dargestellt als Punkte eben mit x,y,rotation, color
Welche Punkte angezeigt werden sollen, wird durch extern bestimmt (anderer Client oder TRIGGER-Funktion, die ein REPLACE VIEW auslöst) Der VIEW ist damit einmal zB. ein SELECT id,x,y,rot,color FROM TabA UNION ALL SELECT id,x,y,rot,color FROM TabB , ein anderes Mal ein SELECT id,x,y,rot,color FROM TabC WHERE x<10 UNION ALL SELECT id,x,y,rot,color FROM TabD WHERE attributY=true oder was auch immer.
Natürlich ist ein Neuzeichnen der Grafik nötig, wenn die Definition des VIEW sich ändert. Aber eben auch, wenn sich eine Zeile im VIEW ändert, weil sich die Daten in der dazugehörigen Tabelle geändert haben.
Das Notify soll daher nicht von allen Tabellen kommen ungeachtet dessen, ob die Tabelle überhaupt dem VIEW momentan zugrundeliegt, soll auch nicht für jedes Objekt kommen, sondern nur für die die momentan im View angezeigt werden…
Und damit nicht ständig ALLES neu gezeichnet werden muss, möchte ich auch wissen, welche Zeile sich geändert hat…