[psql] cascading updates

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • MadMan81
  • Registratie: April 2000
  • Laatst online: 13:21
Ik heb een postgresql 7.3 database met een tabel die er als volgt uit ziet:

code:
1
2
3
4
5
  Column  |            Type             |                         Modifiers
----------+-----------------------------+-----------------------------------------------------------
 hostid   | integer                     | not null default nextval('public.hosts_hostid_seq'::text)
 hostip   | cidr                        | not null
 hostname | character varying(20)       |


Nu is het zo dat er hosts zijn die een hele IP range hebben: bijv. 192.168.1/24. Door de database zelf wordt voor iedere niet bestaande host een nieuwe aangemaakt, indien nodig natuurlijk ;). Het resultaat is een hele lijst met allemaal IP's en een hostname. De gebruiker kan zelf de hostnamen veranderen. Een query als deze zou dan uitgevoerd kunen worden:

code:
1
update hosts set hostname='local network' where hostip << '192.168.1/24';


Alleen nu heb ik bijv. 30 regels met de zelfde hostname. Omdat het hostip veld van het type CIDR is zou het ook volstaan door 1 host aan te maken. Allen hoe update ik nu mijn andere tabellen, want daar staan nog steeds 30 verschillende hostid's.

Ook kan je meerdere ip ranges hebben (die dus niet met een /x samen vallen) met de zelfde hostname.

Ja kan dus niet met de volgende query achterhalen welke hosts je moet gaan fixen:
code:
1
2
3
4
5
6
select * 
from (
   select hostname, count(*) as NumHosts 
   from hosts 
   group by hostname) as temptbl 
where NumHosts>1;


Omdat het nogal in de preformance van de database scheelt, zat ik te denken aan een stored procedure die die hosttabel weer een beetje netjes maakt. Deze strored procedure zou dan bijv. dagelijks gedraaid kunnen worden.

Hopelijk heeft een van jullie een idee.

Cupra Born | www.LaadpasTop10.nl


Acties:
  • 0 Henk 'm!

  • MadMan81
  • Registratie: April 2000
  • Laatst online: 13:21
Laat maar, het is niet meer nodig...

Na wat meer onderzoek bleek het niet de query maar de PHP code te zijn die de boel vertraagde... (Krijg je als je meerdere dingen tegelijk update, zonder naar het tussen resultaat kijkt 8)7 )

Cupra Born | www.LaadpasTop10.nl