Update von View SQL Server

ordu52

Benutzer
Beiträge
15
Hallo zusammen,

vielen Dank für die Aufnahme. :)

Ich hätte eine Frage bezüglich Views. Ich hoffe, mir kann jemand eine Antwort dazu geben.

Zu meiner Frage:

Ich habe eine große Datenbank als Hauptdatenbank.
Eine zweite Datenbank habe ich nur für mich, damit ich mir die Abfragen für die Hauptdatenbank in der Datenbank erstellen kann.

Soweit läuft auch alles super. Ich habe in meiner zweiten Testdatenbank eine View, die die Datensätze von der Hauptdatenbank holt.

Eine Programm wird täglich von meiner Testdatenbank.View die Datensätze automatisch replizieren.

Meine Frage wäre nun...

- ist meine View von der Testdatenbank immer automatisch aktuell ? Also sobald Änderungen in der Hauptdatenbank entstehen, wird dies auch auf meine Ansicht übertragen?

- beim Replizieren wird der aktuelle Stand gezogen oder muss ich etwas einstellen, damit es aktuell bleibt?

Ich hoffe, dass ich meine Frage richtig formulieren konnte.
Vielen Dank im Voraus
 
Werbung:
Eine Sache möchte ich noch hinzufügen.
Ich verwende in meiner View GETDATE().

Meine Frage war insbesondere, dass sich das GETDATE() selbständig aktualisiert? Wichtigste vergesen*
 
Eine VIEW ist erst einmal nur ein Alias für die eigentliche Abfrage, diese wird daher ausgeführt, immer. Es sein denn es ist eine materialized view.

Code:
test=*# create view ordu52 as select timeofday();
CREATE VIEW
test=*# select * from ordu52 ;
  timeofday   
--------------------------------------
 Wed Mar 28 09:08:49.354172 2018 CEST
(1 Zeile)

test=*# select * from ordu52 ;
  timeofday   
--------------------------------------
 Wed Mar 28 09:08:51.786091 2018 CEST
(1 Zeile)

test=*# create materialized view mat_ordu52 as select timeofday();
SELECT 1
test=*# select * from mat_ordu52;
  timeofday   
--------------------------------------
 Wed Mar 28 09:09:49.408417 2018 CEST
(1 Zeile)

test=*# select pg_sleep(1);
 pg_sleep
----------
(1 Zeile)

test=*# select * from mat_ordu52;
  timeofday   
--------------------------------------
 Wed Mar 28 09:09:49.408417 2018 CEST
(1 Zeile)

test=*#

Replikation kann synchron oder asynchron sein, es können bei der Replication auch lags auftreten. Du kannst aber im allgemeinen davon ausgehen, daß das Replicat dem Original identisch ist.
 
Hallo vielen Dank für die Antwort.

Ich hätte noch eine kurze Frage bezüglich Selektionen.

Ich habe eine Tabelle mit folgenden Spalten

- Titel
- Anrede
- ID
- Strasse
-Hausnr
-PLZ
-Ort
-LetzteAenderungAm

Es gibt für einige ID'S mehrere Datensätze, da beim Speichern einer neuen Anschrift das System den vorhanden Datensatz nicht ersetzt hat, sondern einen neuen Datensatz erstellt hat.

Meine Frage wäre, wie kann ich mit SQL sagen...

prüfe die ID, falls mehrere gibt dann nehme den letzten geänderten Datensatz


Ich hoffe mir kann einer helfen.
 
Werbung:
ermittle je id (ich vermute, dazu suchst du den aktuellsten Datensatz) das aktuellste Datum und verbinde dieses dann mit Deiner Tabelle.

Also etwa:

select * from <tabelle> where (id, LetzteAenderungAm) in (select id, max(LetzteAenderungAm) from <tabelle> group by id)
 
Zurück
Oben