PostgreSQL 10 – declarative partitioning – the built-in partitioning
Starting from PostgreSQL 10, PostgreSQL introduced the declarative partitioning syntax. With this syntax the necessity to define additional triggers or rules disappear, but functionality and performances remain unchanged.
It's possible to use declarative partitioning for list partitioning and/or for range partitioning; first of all, we have to define a master table containing the partition method (list
or RANGE
). For example, if we want to partition by a list
method:
create table orders_state
(orderid integer not null,
orderdate date not null,
customerid integer not null,
tax numeric(12,2) not null ,
state char(2))
partition by list (state);
Next, we have to create the child table, for example, for all US orders:
CREATE TABLE ORDERS_US PARTITION OF ORDERS_state FOR VALUES IN ('US');
And we create tables for all south Europe orders:
CREATE TABLE ORDERS_state_EU PARTITION OF ORDERS_state FOR VALUES IN...