sql >> データベース >  >> RDS >> PostgreSQL

Postgresql 9.3のすべてのマテリアライズドビューを一度に更新するにはどうすればよいですか?

    現在のバージョンのPostgreSQL(9.3.1)にはそのような機能がないようです。代わりに、独自の関数を作成する必要があります。

    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;
    

    (githubの場合: https://github.com/sorokine/RefreshAllMaterializedViews



    1. データベース''へのユーザー''@'localhost'のmysqlアクセスが拒否されました

    2. \ data \ base postgresフォルダのデータベース名を見つける方法は?

    3. Mysql_install_dbがファイルを見つけることができません

    4. MySQLはいつインデックスを更新しますか