Fortlaufende Kundennummer

Hm, hat bei mir nicht so richtig funktioniert. ( Die vorhandenen Werte waren nicht fortlaufend)
Nach langem suchen und probieren habe ich es so gelöst:

UPDATE private_customer f
SET customernumber = ( 6000 + rn )::TEXT
FROM (
SELECT ctid, row_number()  OVER ( ORDER BY itime ) AS rn
FROM private_customer ORDER BY itime
) s
WHERE f.ctid = s.ctid;

Leider ist es nicht von mir und deshalb verstehe ich es auch nicht (komplett).
Was macht z.B. ctid? Wofür ist das WHERE?