Обсуждение: Deferred NOT NULL?

Поиск
Список
Период
Сортировка

Deferred NOT NULL?

От
"Gregory Wood"
Дата:
I'd like to create a new table with a NOT NULL constraint that is deferred
until the transaction commit. Unfortunately with this definition:

CREATE TABLE foo (bar  INTEGER NOT NULL INITIALLY DEFERRED);

I get this error:

ERROR:  Misplaced INITIALLY DEFERRED clause

Is it possible to do this or do I have to define it as a CHECK constraint
and defer that?

Greg


Re: Deferred NOT NULL?

От
"Gregory Wood"
Дата:
Hmmmm, I just found a clearer grammar description in the docs and it appears
that only REFERENCES constraints are deferrable in PostgreSQL. I suppose
I'll have to handle this via a trigger for now.

The book mentions that SQL92 allows for deferrable NOT NULL constraints. Is
this planned for anytime soon?

Gerg

> I'd like to create a new table with a NOT NULL constraint that is deferred
> until the transaction commit. Unfortunately with this definition:
>
> CREATE TABLE foo (bar  INTEGER NOT NULL INITIALLY DEFERRED);
>
> I get this error:
>
> ERROR:  Misplaced INITIALLY DEFERRED clause
>
> Is it possible to do this or do I have to define it as a CHECK constraint
> and defer that?



Re: Re: Deferred NOT NULL?

От
Tom Lane
Дата:
"Gregory Wood" <gregw@com-stock.com> writes:
> Hmmmm, I just found a clearer grammar description in the docs and it appears
> that only REFERENCES constraints are deferrable in PostgreSQL. I suppose
> I'll have to handle this via a trigger for now.

> The book mentions that SQL92 allows for deferrable NOT NULL constraints. Is
> this planned for anytime soon?

This is (or should be) on the TODO list, but I don't know of anyone with
near-term plans to fix it.  The whole area of constraints could use an
overhaul, see past discussions in pghackers.

            regards, tom lane