sql >> Database >  >> RDS >> PostgreSQL

Hoe alle gerealiseerde weergaven in Postgresql 9.3 in één keer te vernieuwen?

Het lijkt erop dat de huidige versie van PostgreSQL (9.3.1) dergelijke functionaliteit niet heeft, ik moest in plaats daarvan mijn eigen functie schrijven:

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;

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



  1. Mysql Selecteer wederzijdse paren van records, zonder duplicaten

  2. Begin met een hoofdletter van meerdere woorden van een kolom zonder CAP_FIRST

  3. MySQL:Vind ontbrekende datums tussen een datumbereik

  4. PHP/MySQL rij invoegen en vervolgens 'id' ophalen