Movatterモバイル変換


[0]ホーム

URL:



Facebook
Postgres Pro
Facebook
Downloads
38.5. A Table Rewrite Event Trigger Example
Prev UpChapter 38. Event TriggersHome Next

38.5. A Table Rewrite Event Trigger Example#

Thanks to thetable_rewrite event, it is possible to implement a table rewriting policy only allowing the rewrite in maintenance windows.

Here's an example implementing such a policy.

CREATE OR REPLACE FUNCTION no_rewrite() RETURNS event_trigger LANGUAGE plpgsql AS$$------ Implement local Table Rewriting policy:---   public.foo is not allowed rewriting, ever---   other tables are only allowed rewriting between 1am and 6am---   unless they have more than 100 blocks---DECLARE  table_oid oid := pg_event_trigger_table_rewrite_oid();  current_hour integer := extract('hour' from current_time);  pages integer;  max_pages integer := 100;BEGIN  IF pg_event_trigger_table_rewrite_oid() = 'public.foo'::regclass  THEN        RAISE EXCEPTION 'you''re not allowed to rewrite the table %',                        table_oid::regclass;  END IF;  SELECT INTO pages relpages FROM pg_class WHERE oid = table_oid;  IF pages > max_pages  THEN        RAISE EXCEPTION 'rewrites only allowed for table with less than % pages',                        max_pages;  END IF;  IF current_hour NOT BETWEEN 1 AND 6  THEN        RAISE EXCEPTION 'rewrites only allowed between 1am and 6am';  END IF;END;$$;CREATE EVENT TRIGGER no_rewrite_allowed                  ON table_rewrite   EXECUTE FUNCTION no_rewrite();


Prev Up Next
38.4. A Complete Event Trigger Example Home 38.6. A Database Login Event Trigger Example
pdfepub
Go to PostgreSQL 17
By continuing to browse this website, you agree to the use of cookies. Go toPrivacy Policy.

[8]ページ先頭

©2009-2025 Movatter.jp