Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Tabellle "durchnummerieren" (https://www.delphipraxis.net/151948-tabellle-durchnummerieren.html)

khh 7. Jun 2010 16:44

Datenbank: firbird • Version: 2.1 • Zugriff über: zeos

Tabellle "durchnummerieren"
 
hallo zusammen,
ich möchte eine spalte einer db tabelle neu "durchnummerieren"

unter Oracle soll das so:
UPDATE myTab SET newCol=100000 + ROWNUM;
funktionieren.

Leider klappt das unter firebird nicht.
er kennt ROWNUM nicht :-(

Geht dass unter firebird auch per script, oder muss ich dazu ein Programm schreiben?

Danke für eure eure Hilfe

DeddyH 7. Jun 2010 16:48

AW: Tabellle "durchnummerieren"
 
Was ist das denn für eine Spalte? Hoffentlich nicht der Primärschlüssel, der womöglich noch als FK woanders referenziert wird.

s.h.a.r.k 7. Jun 2010 17:13

AW: Tabellle "durchnummerieren"
 
@DeddyH: Wenn Firebird Referenzielle Integrität dürfte der Code an sich ja gar nicht gehen, ergo würde das ja nicht viel ausmachen, denn dann müssten erst die Referenzen darauf angepasst werden.

Nun kommt es aber darauf an, was du Umnummerieren willst, denn im Normalfall sollte das schon gehen. Das ist ja ein normales SQL-Statement, das auch Firebird abarbeiten können müsste. Ich denke, dass das Problem eher beim richtigen Namen der Spalte liegt. Bist du sicher, dass diese passen?

PS: Das ist kein Script ;)

khh 7. Jun 2010 17:30

AW: Tabellle "durchnummerieren"
 
Zitat:

Zitat von DeddyH (Beitrag 1026452)
Was ist das denn für eine Spalte? Hoffentlich nicht der Primärschlüssel, der womöglich noch als FK woanders referenziert wird.

natürlich nicht :-)

ich möchte dadurch einfach eine Tabelle mit Artikeln mit einer Artikelnummer versehen.

s.h.a.r.k 7. Jun 2010 17:32

AW: Tabellle "durchnummerieren"
 
Und nun? Ohne weitere Informationen können wir dir nicht helfen ;)

khh 7. Jun 2010 17:33

AW: Tabellle "durchnummerieren"
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1026462)

PS: Das ist kein Script ;)


na den ists halt ein "SQL-Statement".;-)

ja die Spalten passen , er meckert ja auch nur :
Column unknown ROWNUM.

s.h.a.r.k 7. Jun 2010 17:38

AW: Tabellle "durchnummerieren"
 
Groß- und Kleinschreibung schon mal geprüft? Bei Oracle musst z.B. "ColumnName" angeben (also mit den Anführungszeichen), wenn du es mit "ColumnName" (mit Anführungszeichen) angelegt hast. Sonst konvertiert Oracle alles in Großbuchstaben.

PS: Muss noch dazu sagen, dass ich hier die Oracle 9.x Version meine.

khh 7. Jun 2010 17:47

AW: Tabellle "durchnummerieren"
 
scheint wohl Oracle-spezifisch zu sein, zumindest haben auch schon andere danach gesucht :-(


http://www.wer-weiss-was.de/theme10/article1430977.html


gibts da nix äquivalentes in firebird ?

EDIT :ich könnte das notfalls mit EXCEL machen... :-(

s.h.a.r.k 7. Jun 2010 18:02

AW: Tabellle "durchnummerieren"
 
Jetzt hab ich es erst verstanden gehabt. Diese Funktionalität ist aber auch irgendwie ein wenig strange, aber gut, mal abgesehen davon. Andere Frage: Warum nimmst du nicht den PK als Ariktelnummer?! Wäre zunächst mal eine Idee.

Hab gerade Google befragt und es scheint, als müsstest du das selbst machen. Klingt zwar etwas blöd, aber dabei würde ich mir sogar etwas mehr Logik für diese Artikelnummer einfallen lassen, wie z.B. die Kategorie des Ariktels mit einbauen, sodass man anhand dessen dann vielleicht auch schon diverse Sachen ableiten kann.

khh 7. Jun 2010 18:07

AW: Tabellle "durchnummerieren"
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1026498)
Jetzt hab ich es erst verstanden gehabt. Diese Funktionalität ist aber auch irgendwie ein wenig strange, aber gut, mal abgesehen davon. Andere Frage: Warum nimmst du nicht den PK als Ariktelnummer?! Wäre zunächst mal eine Idee.

Hab gerade Google befragt und es scheint, als müsstest du das selbst machen. Klingt zwar etwas blöd, aber dabei würde ich mir sogar etwas mehr Logik für diese Artikelnummer einfallen lassen, wie z.B. die Kategorie des Ariktels mit einbauen, sodass man anhand dessen dann vielleicht auch schon diverse Sachen ableiten kann.

der PK scheidet aus, weil dieser nicht mit der Reihenfolge der Artikelsortierung übereinstimmt, sonst wäre das ja das Einfachste ;-)
Selbstverständlich werden Artikelgruppen mit berücksichtigt, und unterschiedliche Nummernkreise vergeben, das angeführte Statement ist ja nur als Beispiel zu sehen.

Danke dir trotzdem für deine Hilfe

Gruss KHH

DeddyH 8. Jun 2010 08:49

AW: Tabellle "durchnummerieren"
 
Ich weiß gerade nicht, ob das nicht auch einfacher geht, aber was eigentlich funktionieren müsste:
- Anlegen einer temporären Tabelle mit den Feldern ID und dem zu generierenden Wert
- Anlegen eines Generators mit dem Startwert 100000
- Anlegen eines Insert-Triggers, der den zu generierenden Wert aus dem Generator holt
- Kopieren der IDs der Originaltabelle in die temporäre
- Update auf die Originaltabelle mit den so generierten Daten
- Löschen der temporären Tabelle sowie des Generators und Triggers

mkinzler 8. Jun 2010 09:22

AW: Tabellle "durchnummerieren"
 
Sollte auch ohne neue Tabelle über ein Hilfsfeld gehen

khh 8. Jun 2010 09:41

AW: Tabellle "durchnummerieren"
 
Zitat:

Zitat von mkinzler (Beitrag 1026736)
Sollte auch ohne neue Tabelle über ein Hilfsfeld gehen

ich danke euch.

ich habs jetzt per Hilfsfeld und einem kleinen Programm gemacht.
War wohl so am Einfachsten.


Gruss KHH


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz