Updating cidr column with network operator

Axel Rau <axel.rau@chaos1.de>

From: Axel Rau <Axel.Rau@Chaos1.DE>
To: pgsql-sql@postgresql.org
Date: 2005-09-22T10:52:16Z
Lists: pgsql-sql
Hi SQLers,

I have a fk from address to network and try to update the foreign key 
column to point at the network, "it belongs to":

CREATE TABLE network (
   id      cidr     PRIMARY KEY     , -- 'PK, ,IPv4/6 Network address'
)

CREATE TABLE address (
   id		 inet     PRIMARY KEY	  , -- 'PK of IPv4/6 host address'
   network cidr     NOT NULL		    -- 'FK to Network table'
                       REFERENCES network ON DELETE CASCADE ON UPDATE 
CASCADE
)

I tried (using the WHERE clause to eliminate the addresses were no 
corresponding net exists):
UPDATE address
	SET network = (SELECT N.id WHERE A.id << N.id)
	FROM address A, network N
	WHERE A.id << N.id;

But this ended up with all network columns pointing at the same net 
(-:).
Any help would be appreciated.

Axel
Axel Rau, Frankfurt, Germany                           +49-69-951418-0