Fortlaufende Kundennummer

Hey,
ich habe eine Tabelle mit Kunden. Die Kundennummer ist als Text gespeichert.
Nun möchte ich neue fortlaufende Kundennummern mit einem Offset (6000) verwenden.
Wie kann ich inkrementieren?
Ich suche so etwas:
UPDATE cusutomer SET ( number++)::TEXT;

Dank und Gruß

Ronny

test=*# create table ronny (kunde text);
CREATE TABLE
test=*# copy ronny from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF signal.
>> 5
>> 6
>> 7
>> 8
>> 9
>> \.
COPY 5
test=*# select * from ronny ;
 kunde 
-------
 5
 6
 7
 8
 9
(5 rows)

test=*# update ronny set kunde = (kunde::int + 6000)::text;
UPDATE 5
test=*# select * from ronny ;
 kunde 
-------
 6005
 6006
 6007
 6008
 6009
(5 rows)

test=*# 

speicher Zahlen bitte mit korrektem Datentyp!

Nein, da haben wir uns missverstanden.
Das Erhöhen soll für sämtliche schon vorhandenen Datensätze automatisch geschehen.
Ich suche so was wie SERIAL. Nur nachträglich.

Die vorhandenen Kunden sollen neue aufeinander folgende Kundennummern bekommen.

Dann ändere die Spalte zu einem integer (oder bigint) , und definiere sie als “identity” Spalte:

alter table customer 
  alter number type integer using number::integer,
  alter number set not null,
  alter number add generated always as identity (start with 6000);

Das set not null kannst Du natürlich weglassen, wenn die Spalte bereits als NOT NULL definiert ist.

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?

Dann habe ich wohl die Frage falsch verstanden. Ich dachte Du wolltest in Zukunft die IDs automatisch generieren lassen, und dabei bei 6000 anfangen

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.