sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur uppdaterar man alla materialiserade vyer i Postgresql 9.3 på en gång?

Det verkar som att nuvarande version av PostgreSQL (9.3.1) inte har sådan funktionalitet, jag har fått skriva min egen funktion istället:

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;

(på github:https://github.com/sorokine/RefreshAllMaterializedViews )



  1. Okänd tabell i MULTI DELETE

  2. Hur förhindrar man dbms_output.put_line från att trimma ledande blanksteg?

  3. Hur får man effektiv Sql Server-deadlock-hantering i C# med ADO?

  4. Finns det en lösning för att definiera en unik restriktion som behandlar NULL-värden som icke-särskilda?