Update-Befehl in SQL Datenbank

Guten Tag, ich bin blutiger Anfänger in SQL und wer-weiss-was!!!

Ich möchte ein Update in einer SQL Datenbank (Firebird) für die Spalte ‚ADR_NR‘ ausführen.
Es sollen nur die vorhandenen Zähler von 00001 +1 fortlaufend nummeriert werden.
Kann mir dabei jemand helfen, den Befehl/String mitteilen?

Gruß lolli123

Hallo Ralf,

wie bereits schon erwähnt, möchte ich in einer Firebird-Datenbank ein Update generieren. Dort soll eine Spalte mit dem Namen „ADR_NR“ neu fortlaufend nummeriert werden. Ich möchte das mit IB-Expert machen.
Dafür benötige ich einen Befehl „update ADR_NR set feld=feld+1 where …“ oder anders.
Ich hoffe Du kannst mich jetzt besser verstehen.

Gruß Rolf

Hi!

wie bereits schon erwähnt, möchte ich in einer
Firebird-Datenbank ein Update generieren. Dort soll eine
Spalte mit dem Namen „ADR_NR“ neu fortlaufend nummeriert
werden. Ich möchte das mit IB-Expert machen.
Dafür benötige ich einen Befehl „update ADR_NR set feld=feld+1
where …“ oder anders.

Wie jetzt?
Soll das Feld ADR_NR überall um 1 erhöht werden?

update set adr\_nr=adr\_nr+1

Oder soll die Numerierung komplett neu durchgeführt werden?
Nach welchen Sortierkriterien?
Um Lücken zu füllen?

Grüße,
Tomh

Hallo Tomh,

zuerst einmal Danke für deine Stellungnahme.
In dem Feld ADR_NR die Numerierung komplett neu durchgeführt werden,
angefangen bei 000001 und um 1 erhöht werden.

Gruß Rolf

Moin, Rolf,

mach Dir das Leben leichter: Exportiere die ganze Tabelle nach Excel (oder erst in eine Textdatei, dann kannst Du diese mit Excel öffnen), nimm dort die Änderungen vor und importiere sie wieder.

Gruß Ralf

Hallo Ralf,

geht nicht da die Datenfelder nit Nullen 000001, 000002 usw. beginnen.

Gruß Ralf

geht nicht da die Datenfelder nit Nullen 000001, 000002 usw.
beginnen.

Hallo lolli123,

du willst also igendein Feld in deiner Tabelle neu numerieren, und zwar mit Zahlenstrings (sonst keine fuehrenden Nullen).

In Oracle würde ich folgends machen (sofern die Reihenfolge der Numerierung egal ist):

UPDATE
 tabelle\_x
SET
 id\_feld = to\_char(rownum, 'FM000009');

Was du brauchst:

  • eine (Pseudo)column, die pro Resultzeile automatisch um eins hochzählt (bei Oracle die ROWNUM)
  • ein Konvertierungsfunktion, die aus einer Zahl einen formatierten String macht, Formatangabe wählbar (-> to_char() )

Firebird kenne ich zwar nicht, es sollte aber entsprechende Möglichkeiten haben.

gruss
bernhard

Hallo Bernhard,
ich möchte in einer Firebird-Datenbank ein Update generieren. Dort soll eine Spalte mit dem Namen „ADR_NR“ neu fortlaufend nummeriert
werden. Ich möchte das mit IB-Expert machen.
Dafür benötige ich einen Befehl „update set adr_nr=adr_nr+1“
oder anders.

Die Numerierung 000001, 000002 usw. soll komplett neu durchgeführt werden?

Gruß Rolf

Gib auf
Hi Rolf,

nimm’s mir nicht krumm, aber das bisherige Frage-Antwort-Spiel macht deutlich, dass Du nicht in der Lage bist, das Problem so auszudrücken, dass Dir jemand helfen kann. Wenn ich von irgendwas nicht die Bohne verstehe, lasse ich es den Fachmann machen, zur Not drücke ich dafür ein paar Dublonen ab.

Gruß Ralf

Hallo lolli123,

Ich möchte ein Update in einer SQL Datenbank (Firebird) für
die Spalte ‚ADR_NR‘ ausführen.
Es sollen nur die vorhandenen Zähler von 00001 +1 fortlaufend
nummeriert werden.

Sowas lässt sich leichter lösen, wenn Du ansatzweise zeigst, was in deiner DB drin steckt. Ich gehe jetzt mal vom schlimmsten Fall aus :wink: mit folgender Tabelle:

Tabelle adresse
adr\_nr int(11) 
adr varchar(255)

Inhalt:
adr\_nr adr
3 alpha
7 beta
9 gamma

Du brauchst eine Spalte ADR_NR aufsteigend mit führenden Nullen, also kommt eine neue Spalte hinzu, die erstmal provisorisch ADR_NR_NEU heisst:

ALTER TABLE `adresse` ADD `adr_nr_neu` BIGINT( 6 ) UNSIGNED ZEROFILL NOT NULL AUTO\_INCREMENT PRIMARY KEY FIRST;

Die Tabelle ist jetzt so gefüllt:

adr\_nr\_neu adr\_nr adr
000001 3 alpha
000002 7 beta
000003 9 gamma

wobei die alte Spalte adr_nr überflüssig ist (also weg damit) und die neue noch falsch heisst (also umbenennen). Beides erledigen wir so:

ALTER TABLE `adresse` DROP `adr_nr`
ALTER TABLE `adresse` CHANGE `adr_nr_neu` `adr_nr` BIGINT( 6 ) UNSIGNED ZEROFILL NOT NULL AUTO\_INCREMENT

und schon haben wir das gewünschte Ergebnis, mit dem hübschen Nebeneffekt, daß sich deine ADR_NR von selbst hochzählt.

adr\_nr adr
000001 alpha
000002 beta
000003 gamma

Wenn das nicht deinen Wünschen entspricht, musst Du schon etwas konkreter werden. Und ob das alles in Firebird läuft, musst Du ausprobieren.

Viele Grüße
Marvin