Обсуждение: PARTIAL, DEFERRABLE UNIQUE CONSTRAINTS
Hello,
I need to create a deferrable,unique partial constraint (using a WHERE clause) on my table, which in addition should also be deferrable. AFAIK deferrable constraints are just creatable with
ALTER TABLE demand ADD CONSTRAINT unique_salesorderitem_id
UNIQUE (salesorderitem_id) DEFERRABLE INITIALLY DEFERRED;
but here I miss the WHERE clause. Using the CREATE INDEX notation like this:
CREATE UNIQUE INDEX idx_demand_salesorderitem_id_of_parentdemands
ON demand(salesorderitem_id) WHERE parentdemand_id IS NULL;
I cannot specify the deferability (is that a word?). I am Using PostgreSQL 9.1. Is there any way around this?
Regards,
Daniel Migowski
dmigowski wrote > I need to create a deferrable,unique partial constraint (using a WHERE > clause) on my table I don't know the exact required syntax but the description of the "EXCLUDE" clause to "CREATE TABLE" implies that it can be used to accomplish what you desire. Not tested but something like: EXCLUDE USING btree ( col WITH = ) WHERE ... DEFERRABLE INITIALLY IMMEDIATE http://www.postgresql.org/docs/9.1/static/sql-createtable.html While the documentation says that using btree with EXCLUDE is uncommon this does seem to be a mandatory exception. David J. -- View this message in context: http://postgresql.1045698.n5.nabble.com/PARTIAL-DEFERRABLE-UNIQUE-CONSTRAINTS-tp5818441p5818445.html Sent from the PostgreSQL - general mailing list archive at Nabble.com.
Works like a charm! Thank you very much, PostgreSQL really is an awesome database, and so is the community. -----Ursprüngliche Nachricht----- Von: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] Im Auftrag von David G Johnston Gesendet: Mittwoch, 10. September 2014 15:45 An: pgsql-general@postgresql.org Betreff: Re: [GENERAL] PARTIAL, DEFERRABLE UNIQUE CONSTRAINTS dmigowski wrote > I need to create a deferrable,unique partial constraint (using a WHERE > clause) on my table I don't know the exact required syntax but the description of the "EXCLUDE" clause to "CREATE TABLE" implies that it can be used to accomplish what you desire. Not tested but something like: EXCLUDE USING btree ( col WITH = ) WHERE ... DEFERRABLE INITIALLY IMMEDIATE http://www.postgresql.org/docs/9.1/static/sql-createtable.html While the documentation says that using btree with EXCLUDE is uncommon this does seem to be a mandatory exception. David J. -- View this message in context: http://postgresql.1045698.n5.nabble.com/PARTIAL-DEFERRABLE-UNIQUE-CONSTRAINTS-tp5818441p5818445.html Sent from the PostgreSQL - general mailing list archive at Nabble.com. -- Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general