On 22/08/2011, at 01:19, Harald Fuchs wrote:

> In article <caf36091-203e-4c10-aa53-7d9087114...@unicell.co.il>,
> Herouth Maoz <hero...@unicell.co.il> writes:
> 
>> Hi,
>> I'm designing a new database. One of the table contains allowed IP ranges 
>> for a customer (Fields: customer_id, from_ip, to_ip) which is intended to 
>> check - if  an incoming connection's originating IP number falls within the 
>> range, it is identified as a particular customer.
> 
>> Naturally, I'd like to have constraints on the table that prevent entering 
>> of ip ranges that overlap. Is there a way to do that with exclusion 
>> constraints? Or do I have to define a new type for this?
> 
> This "new type" already exists: ip4r, which can be found in pgfoundry.
> With it you can do
> 
> CREATE TABLE mytbl (
>  iprange ip4r NOT NULL,
>  ...,
>  CONSTRAINT range_check CHECK ((NOT overlap(iprange)))
> );


Thank you.

I assume you can't use a CHECK constraint for between-rows constraints. 
Wouldn't this  be

CONSTRAINT EXCLUDE ( iprange WITH && )

?

Basically, though, I'm not too happy about using compound types - that's why I 
asked if I have to. I'm not sure what my application will have to send and what 
it will receive when querying a compound type. I use PHP/ZF. I have just now 
posted a question on the pgsql-php list about this. I suspect I'll be getting a 
string which I'll have to parse, which would make the application more 
complicated to read and understand.

Herouth
-- 
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql

Reply via email to