PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak odświeżyć wszystkie zmaterializowane widoki w Postgresql 9.3 na raz?

Wygląda na to, że obecna wersja PostgreSQL (9.3.1) nie ma takiej funkcjonalności, zamiast tego musiałem napisać własną funkcję:

CREATE OR REPLACE FUNCTION RefreshAllMaterializedViews(schema_arg TEXT DEFAULT 'public')
RETURNS INT AS $$
DECLARE
    r RECORD;
BEGIN
    RAISE NOTICE 'Refreshing materialized view in schema %', schema_arg;
    FOR r IN SELECT matviewname FROM pg_matviews WHERE schemaname = schema_arg 
    LOOP
        RAISE NOTICE 'Refreshing %.%', schema_arg, r.matviewname;
        EXECUTE 'REFRESH MATERIALIZED VIEW ' || schema_arg || '.' || r.matviewname; 
    END LOOP;

    RETURN 1;
END 
$$ LANGUAGE plpgsql;

(na github:https://github.com/sorokine/RefreshAllMaterializedViews )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernacja nie może automatycznie utworzyć schematu na postgresie Heroku

  2. Problem z aktywnym odpytywaniem rekordów i heroku.

  3. Liczba PostgreSQL ile razy podciąg występuje w tekście

  4. Arval SQLException:FATAL:przepraszam, zbyt wielu klientów już w postgresie

  5. Czy zamówienie według widoku gwarantuje kolejność wyboru?