2017-10-09 2 views

Antwort

1

eine select-Anweisung tun Wenn Sie eine materialisierte Ansicht in einer Transaktion und Rollback der Transaktion zu aktualisieren, bleibt der Blick in den Zustand vor der Transaktion (dh nicht aufgefrischt). Sie müssen die Transaktion festschreiben, um alle ihre Befehle zu vervollständigen.

Beispielaufbau:

create table my_table(id int); 
create materialized view mat_view as 
select * from my_table; 

Transaktion:

begin; 
insert into my_table 
select i from generate_series(1, 3) i; 
refresh materialized view mat_view; 
select * from mat_view; 

-- inside the transaction the view is refreshed 
id 
---- 
    1 
    2 
    3 
(3 rows) 

rollback; 

Außerhalb der Transaktion:

select * from mat_view; 

-- but after rollback the view is empty again 
id 
---- 
(0 rows)  
+0

Ich bin nur die Transaktion nach dem Testlauf Rollback und nicht vor der Aussicht Aktualisierung. Ich hoffe, die Daten für den Umfang des Tests/Transaktion zu pflegen –

+0

Ich bin mir nicht sicher, ob ich verstehe, was Sie tun möchten. Ich habe ein Beispiel hinzugefügt. – klin

+0

war es meine Abfrage, die eher als die Transaktion war –

Verwandte Themen