Re: Unique values on multiple tables

From: Emre Hasegeli <emre(at)hasegeli(dot)com>
To: Sterpu Victor <victor(at)caido(dot)ro>
Cc: PostgreSQL General <pgsql-general(at)postgresql(dot)org>
Subject: Re: Unique values on multiple tables
Date: 2016-03-28 09:06:23
Message-ID: CAE2gYzxq5aqKE43p8kpphKv8WDUs6UKSj8BZ+0UWrAVV5urrxw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> I have 2 tables and I must make asure unique values like this.
>
> table1
> id
> nr - integer
>
> table2
> id
> id_table1 - FK in Table 1
> valid_from - timestamp
>
> There must be unique values for:
> - nr - from table1
> and
> - YEAR(MIN(valid_from)) from table 2

In situations like this, I add the required column to the other table
with a foreign key. Assuming that (id) is the primary key of table1,
you would need another unique key on (nr, id). Than you can add nr
column to table2 by changing the foreign key to (nr, id_table1)
references table1 (nr, id).

Obviously, its not an efficient solution. It requires an additional
unique key and more storage on the referencing table. Though, I
believe it is a safe one. It doesn't allow the duplicated column to
be inconsistent. There are many things that can go wrong under
concurrency with a trigger like you posted.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Pierre Chevalier 2016-03-28 09:41:00 Re: Multi Master Replication setup
Previous Message Andreas Kretschmer 2016-03-28 08:54:15 Re: Multi Master Replication setup