Re: Dealing with unique IP adresses and ranges

Поиск
Список
Период
Сортировка
От Larry Rosenman
Тема Re: Dealing with unique IP adresses and ranges
Дата
Msg-id 1031062375.407.6.camel@lerlaptop.iadfw.net
обсуждение исходный текст
Ответ на Re: Dealing with unique IP adresses and ranges  (Mark Fletcher <markf@wingedpig.com>)
Список pgsql-novice
On Tue, 2002-09-03 at 08:55, Mark Fletcher wrote:
> Oliver Elphick wrote:
>
> >On Tue, 2002-09-03 at 07:21, Mark Fletcher wrote:
> >
> >
> >>Hello,
> >>
> >>No doubt this is a simple question for those more experienced with SQL
> >>than I (that is, most everyone), but I'm stumped. For the table in
> >>question, each row represents some information about a particular IP
> >>address. IP addresses must be unique in regards to a particular user,
> >>represented by a userId. So far, easy, and the following works for me
> >>for this:
> >>
> >>create unique index ip_index on ip_table( ip, userId );
> >>
> >>But what I want is to also be able to store an incomplete IP address,
> >>representing a range, say a class C block. And when I try to insert a
> >>row representing a C block, if there are any rows that represent
> >>complete IP addresses within that C block, it should return an error
> >>(enforce uniqueness). And vice versa, if there's a row representing a
> >>class C block, and I try to insert a complete IP address within that
> >>block, it should return an error.
> >>
> >>An example. I insert the following rows:
> >>
> >>1.2.3.1
> >>1.2.3.2
> >>1.2.3.3
> >>
> >>And I try to insert the IP address range 1.2.3, it should error out.
> >>btw, in my app, IP addresses are represented not as strings, but as
> >>ints. But if it makes things easier in the database, I can store them as
> >>strings.
> >>
> >>Hope this makes sense. How can I do this?
> >>
> >>
> >
> >Have you thought about using the inet or cidr datatypes, rather than
> >string or int?
> >
> >You could index on network(ip)
> >
> >
> >
> Thanks for the reply. I've gone through the docs for network datatypes
> and functions. The operator '<<' does the test I think I'm looking for
> (b is contained in a). But how do I incorporate that into a constraint
> on the table?
>

Sounds like you need a trigger to look for any tuples matching b << a.


> Thanks,
>
>
> Mark
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>
--
Larry Rosenman                     http://www.lerctr.org/~ler
Phone: +1 972-414-9812                 E-Mail: ler@lerctr.org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Dealing with unique IP adresses and ranges
Следующее
От: "Sandro A. Nascimento"
Дата:
Сообщение: I'm to being crazy... heheh