Re: redundancy in CHECK CONSTRAINTs

Поиск
Список
Период
Сортировка
От Ferindo Middleton Jr
Тема Re: redundancy in CHECK CONSTRAINTs
Дата
Msg-id 43362BBC.1050301@verizon.net
обсуждение исходный текст
Ответ на Re: redundancy in CHECK CONSTRAINTs  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-sql
Thank you for your advice, Tom. I've re-done the table in my db using 
the schema you describe below. The is a need for the id field. Other 
tables in my applications use it to refer to any one intsystem/extsystem 
relationship and be able to provide users with one simple number to use 
to refer to them. Thank you.

Ferindo

Tom Lane wrote:
> Ferindo Middleton Jr <fmiddleton@verizon.net> writes:
>   
>> I have the following table:
>>     
>
>   
>> CREATE TABLE gyuktnine (
>>      id               SERIAL,
>>     intsystem      INTEGER NOT NULL REFERENCES yuksystems(id) CONSTRAINT 
>> int_cannot_equal_ext
>>                        CHECK (intsystem != extsystem),
>>     extsystem     INTEGER NOT NULL REFERENCES yuksystems(id) CONSTRAINT 
>> ext_cannot_equal_int
>>                         CHECK (extsystem != intsystem), 
>>     PRIMARY KEY (intsystem, extsystem)
>> );
>>     
>
>   
>> Is this redundant?
>>     
>
> Yes.  I think it's poor style too: a constraint referencing multiple
> columns should be written as a table constraint not a column constraint.
> That is, you ought to write
>
> CREATE TABLE gyuktnine (
>     id            SERIAL,
>     intsystem     INTEGER NOT NULL REFERENCES yuksystems(id),
>     extsystem     INTEGER NOT NULL REFERENCES yuksystems(id),
>     PRIMARY KEY (intsystem, extsystem),
>     CONSTRAINT int_cannot_equal_ext CHECK (intsystem != extsystem)
> );
>
> At least in the earlier versions of the SQL standard, it was actually
> illegal for a column constraint to reference any other columns.  I'm not
> sure if that's still true in the latest spec.  Postgres treats column
> constraints and table constraints alike, but other SQL databases are
> likely to be pickier.
>
> BTW, is there any actual need for the "id" column here, seeing that
> you have a natural primary key?
>
>             regards, tom lane
>
>   


В списке pgsql-sql по дате отправления:

Предыдущее
От: Cere Davis
Дата:
Сообщение: Re: stored procs in postgresql
Следующее
От: "A. Kretschmer"
Дата:
Сообщение: Re: stored procs in postgresql