Hi Michael,

I am trying to create a foreign key constraint on a table : audit_param in 
postgres 12 which references  partitioned table audit_p. is there anyway to get 
rid of this error.

ERROR:  there is no unique constraint matching given keys for referenced table 
"audit_p"


                                      ^
sd_tems_partition_test=# CREATE TABLE audit_logging.audit_p (
sd_tems_partition_test(#     id BIGINT   NOT NULL,
sd_tems_partition_test(#     event_id BIGINT  NOT NULL,
sd_tems_partition_test(#     caused_by_user_id BIGINT  NOT NULL,
        PARTITION BY RANGE(create_dtt);
        sd_tems_partition_test(#     -- additional user information (to be 
defined by the application)
sd_tems_partition_test(#     adtl_user_info BIGINT,
sd_tems_partition_test(#     create_dtt TIMESTAMP DEFAULT now()  NOT NULL,
sd_tems_partition_test(#     CONSTRAINT audit_PK1 PRIMARY KEY (id,create_dtt))
sd_tems_partition_test-# PARTITION BY RANGE(create_dtt);
CREATE TABLE
sd_tems_partition_test=# \d audit_logging.audit_p
                    Partitioned table "audit_logging.audit_p"
      Column       |            Type             | Collation | Nullable | 
Default
-------------------+-----------------------------+-----------+----------+---------
id                | bigint                      |           | not null |
event_id          | bigint                      |           | not null |
caused_by_user_id | bigint                      |           | not null |
adtl_user_info    | bigint                      |           |          |
create_dtt        | timestamp without time zone |           | not null | now()
Partition key: RANGE (create_dtt)
Indexes:
    "audit_pk1" PRIMARY KEY, btree (id, create_dtt)
Number of partitions: 0

sd_tems_partition_test=# CREATE TABLE audit_logging.audit_param (
sd_tems_partition_test(#     audit_id BIGINT  NOT NULL,
sd_tems_partition_test(#     param_position SMALLINT  NOT NULL,
sd_tems_partition_test(#     value CHARACTER VARYING(4096)  NOT NULL,
sd_tems_partition_test(#     CONSTRAINT audit_param_PK PRIMARY KEY (audit_id)
sd_tems_partition_test(# );
CREATE TABLE
sd_tems_partition_test=# \d audit_logging.audit_param;
                     Table "audit_logging.audit_param"
     Column     |          Type           | Collation | Nullable | Default
----------------+-------------------------+-----------+----------+---------
audit_id       | bigint                  |           | not null |
param_position | smallint                |           | not null |
value          | character varying(4096) |           | not null |
Indexes:
    "audit_param_pk" PRIMARY KEY, btree (audit_id)

sd_tems_partition_test=#


sd_tems_partition_test=# Alter table audit_logging.audit_param add constraint 
audit_param_audit_fk2 FOREIGN KEY (audit_id) REFERENCES 
audit_logging.audit_p(id);
ERROR:  there is no unique constraint matching given keys for referenced table 
"audit_p"
sd_tems_partition_test=#

Thanks,
Shatamjeev

Reply via email to