Hello everyone,
I have a scenario where wanted to add PK on partition to make sure to monitor 
unique values for two columns values. but as PG required to partition column 
should be part of PK. How can we make sure actual two columns need to be unique 
values.
and also while insert into table need be use 'on conflict'.
create table t (id int, pid int , name name , dt date) partition by 
range(dt);--create unique index on t(id,pid);--alter table t  add constraint uk 
unique  (id);--create unique index on t(id,pid);alter table t  add constraint 
uk unique  (id,pid,dt);
create table t1 partition of t for values from ('2020-01-01') to 
('2020-02-01');alter table t1  add constraint uk1 unique  (id,pid);create table 
t2 partition of t for values from ('2020-02-01') to ('2020-03-01');alter table 
t2  add constraint uk2 unique  (id,pid);create table t4 partition of t for 
values from ('2020-03-01') to ('2020-04-01');alter table t4  add constraint uk3 
unique  (id,pid);create table t3 partition of t for values from ('2020-04-01') 
to ('2020-05-01');alter table t3  add constraint uk4 unique  (id,pid);
insert into t(id,pid,name,dt) values (1,2,'raj','2020-01-01')on conflict 
(id,pid) do nothing;
ERROR: there is no unique or exclusion constraint matching the ON CONFLICT 
specification

https://dbfiddle.uk/?rdbms=postgres_11&fiddle=36b3eb0d51f8bff4b5d445a77d688d88


Thanks,Rj

Reply via email to