Re: Dropping behavior for unique CONSTRAINTs - Mailing list pgsql-general

From Peter J. Holzer
Subject Re: Dropping behavior for unique CONSTRAINTs
Date
Msg-id 20230304080303.a3oimbvcoo5lo3d5@hjp.at
Whole thread Raw
In response to Dropping behavior for unique CONSTRAINTs  (Conner Bean <conner.bean@icloud.com>)
Responses Re: Dropping behavior for unique CONSTRAINTs  (Ron <ronljohnsonjr@gmail.com>)
List pgsql-general
On 2023-03-02 20:30:41 -0000, Conner Bean wrote:
> Hi folks,I'm curious if there are any docs supporting the
> functionality behind dropping unique constraints. For context, I am
> interested in enforcing uniqueness on a column. This table is heavily
> used, and I plan on dropping the constraint in the future. I wanted to
> avoid using a unique index since dropping them requires an exclusive
> lock and cannot be done concurrently. My thought was to then use a
> unique constraint, since I've read unofficial docs[0] that say these
> can be dropped safely with no lock.However, since a unique index would
> be the backing index to the unique constraint, I'm curious how this
> would work in practice (or if it even does!).

So your plan is to create a unique constraint (backed by a unique
index) and then to drop the index and keep the constraint?

That doesn't work. A unique constraint can't exist without a (unique)
index. Think about it: With a unique constraint PostgreSQL needs to
check for every insert whether the value already exists in the table.
Without an index this would mean a full table scan.

        hp

--
   _  | Peter J. Holzer    | Story must make more sense than reality.
|_|_) |                    |
| |   | hjp@hjp.at         |    -- Charles Stross, "Creative writing
__/   | http://www.hjp.at/ |       challenge!"

Attachment

pgsql-general by date:

Previous
From: Pavel Stehule
Date:
Subject: Re: Converting row elements into a arrays?
Next
From: "Peter J. Holzer"
Date:
Subject: Re: Dropping behavior for unique CONSTRAINTs