Re: Enforcing uniqueness on [real estate/postal] addresses

From: Philip Semanchuk <philip(at)americanefficient(dot)com>
To: Peter Devoy <peter(at)3xe(dot)co(dot)uk>
Cc: "Psql_General (E-mail)" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Enforcing uniqueness on [real estate/postal] addresses
Date: 2020-05-11 18:14:29
Message-ID: F7BDBF89-E6AD-4E5B-9DCC-4D17C31CAB3D@americanefficient.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> On May 11, 2020, at 12:55 PM, Peter Devoy <peter(at)3xe(dot)co(dot)uk> wrote:
>
> Hi list
>
> I need to store addresses for properties (as in real estate) so in my
> naivety I created a unique constraint like this:
>
> ALTER TABLE properties
> ADD CONSTRAINT is_unique_address
> UNIQUE (
> description, --e.g. Land north of Foo Cottage
> address_identifier_general,
> street,
> postcode
> );
>
> Of course, if any of the fields are NULL (which they often are) I end
> up with duplicates.
>
> One solution may be to add NOT NULL constraints and use empty strings
> instead of NULL values but, until asking around today, I thought this was
> generally considered bad practice.
>
> Please can anyone recommend a way of approaching this? Perhaps empty strings
> are pragmatic in this situation?

Hi Peter,
I wouldn’t use empty strings in place of NULL. It’s possible to define a partial unique index that has more or less the same effect as a constraint. Have you looked into them?

Cheers
Philip

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Matthias Apitz 2020-05-11 18:18:10 Re: PostgreSQL client hangs sometimes on 'EXEC SQL PREPARE sid_sisisinst FROM :select_anw;'
Previous Message Peter Devoy 2020-05-11 16:55:49 Enforcing uniqueness on [real estate/postal] addresses