Sie sind nicht angemeldet.

1

08.09.2005, 13:47

INT problem beste lösung?

hi, leute ich hoffe ihr könnt mir diesmal einen guten ratschlag geben.
also ich muss in einer datenbak die typ-teile nummer eingeben.
jetzt sind diese leider 10stelleig das ging ganz gut solange die erste stelle eine null war dann musste ich eine nummer eingeben die an der ersten stelle eine 3 hat und bums INT reicht nichtmehr ausserhalb des gültigen bereiches.

jetzt hab ich mir überlegt die nummer auf mehrere spalten aufzuteilen leider kann ich dann dort nichtmehr das UNIQUE feature nutzen und das ist sehr schade
als beispiel
111.222.333.0
111.222.333.1
also ist UNIQUE nichtmehr möglich :(

welche lösungsvorschläge habt ihr für mich?
muss ichauf das feature verzicheten?

schreibt bitte auch wenn ihr keinen wirklichen lösungsvorschlag habt, damit ich etwas ressonanz bekomme.

danke für eure hilfe.
vorsicht freilaufender noobie

2

08.09.2005, 13:59

RE: INT problem beste lösung?

Da es sich bei diesen Typ-Teile-Nummern ja immer um das gleiche Muster handelt, und Du auch voranstehende Nullen und hoche Zahlen außerhalb des Wertebereichs von INT benutzen musst, würde ich zu nem Datenfald char(10) greifen, dabei kannst Du unique bleiben und hast quasi den vollen Umfang der 10 Stellen zu Verfügung. Mit sochen Kennzahlen wird ja ohnehin selten gerechnet, also brauchst Du auch nicht wirklich einen Zahlenwert in die Tabellen abzulegen.. Das mit dem Zeteilen würde ich nicht machen, das bringt nur unnötige Unordnung in die ganze Angelegenheit..
Just because an OS holds 90% of the market doesn`t mean it`s superior.
Remember 90% of all animals are insects.

Wer sucht der findet..

3

08.09.2005, 14:08

ok, das klingt doch schonmal gut schade ist nur dass auch buchstaben zugelassen werden.
aber wenn der zulieferer mal seine nummern ändert, oder auch hier firmenintern ist das ganz praktisch und sogar flexibler so.

ok, ich denke ich werde dies so umsetzten.

kannst du mir sagen ob es irgendwie möglich ist das format zu ändern von int nach char?
ansonsten müsste ich alles neu eingeben :(
vorsicht freilaufender noobie

Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

4

08.09.2005, 14:21

ist das Datenbank intern oder verwendest du eine Programmiersprache, um auf die Datenbank zuzugreifen?
bei c gibt es sprintf(), bei Java String.toInt();
localhost,
sweet localhost

5

08.09.2005, 14:27

also ich bingerade am anfang meiner arbeit, und hab noch keinen netzanschluss an meinem datenbankrechner.
d.h. in zukunft wird per webserver mit php auf die datenbank zugegriffen, aber im moment da ich noch nicht lange vorort bin wurde mir noch kein webserver zur verfügung gestellt mit dem ich arbeiten könnte.

also hab ich nur bissle sql mässig rumgespielt.
vorsicht freilaufender noobie

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »andon« (08.09.2005, 14:31)


6

08.09.2005, 14:41

Du machst nen Dump Deiner Tabelle machst die ganze Sache leer und änderst den Typ des Feldes, danach spielst Du die Daten wieder ein..

Um zu verhindern, daß Buchstaben mit eingegeben werden, kannst ne Überprüfung per Programm durchführen.. Und wenn da was nicht stimmt, dann muss eben nochmal eingegeben werden..
Just because an OS holds 90% of the market doesn`t mean it`s superior.
Remember 90% of all animals are insects.

Wer sucht der findet..

7

08.09.2005, 14:47

ok dann werde ich mich mal reinlesen, wie das mit dem dump geht.
vielen dank euch für eure hilfe.
gruss andon
vorsicht freilaufender noobie

8

08.09.2005, 14:59

hm, jetzt wollte ich gerade meine datenbank sichern und bekomme die nachricht
bash: sicherung: keine berechtigung

mein eingegebener befehl ist
pg_dump arbeit > sicherung

??was ist da los...
ich hab das alles unter dem postgresuser ausgeführt.
ein sudo hat aber nichts gebracht.
vorsicht freilaufender noobie

9

08.09.2005, 15:01

Du musst das natürlich als der user machen, der auch die Berechtigung zum schreiben in der DB hat.. Also der benutzer, der da die Daten reingeschrieben hat, der die Tabellen anlegen kann und so weiter.. Ganz sicher gehst DU natürlich als root, aber wahrscheinlich iss nur Dein lokaler Benutzer gefragt..
Just because an OS holds 90% of the market doesn`t mean it`s superior.
Remember 90% of all animals are insects.

Wer sucht der findet..

10

08.09.2005, 15:13

muss ich die datenbank starten oder auslassen (hab sie gestartet gehabt)


der linuxuser postgres hat eingentlich meines wissens nach alle berechtigungen dazu, schliesslich hab ich mit ihm alles installier und auch datenbak gestartet, angelegt tabellen angelegt und die inhalte aufgefüllt
vorsicht freilaufender noobie

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »andon« (08.09.2005, 15:14)


murdog

Anfänger

  • »murdog« ist männlich

Beiträge: 16

Wohnort: Hockenheim

Beruf: Softwareentwickler

  • Nachricht senden

11

08.09.2005, 15:15

RE: INT problem beste lösung?

Sollte nicht unerwähnt bleiben, das neben INT auch noch andere SQLTypen zum Speichern von Zahlen möglich sind. Z.B. Number (heißt manchmal auch Numeric oder Decimal) welche bedeutend höhere Zahlenwerte zulassen. Bei Oracle kann zum Beispiel mit Number(38) eine bis zu 38stellige Nummer gespeichert werden.
Außerdem gibts da noch FLOAT and so on....
also wenn wirklich mal mit solchen "großen" Werten gerechnet werden sollen - sollte man sich die anderen unterstützen Datentypen in SQL mal anschauen und natürlich was speziell deine DB unterstützt.
good, cheap, fast - choose any two !
[quelle anonym]
[URL=http://jayce.sourceforge.net]http://jayce.sourceforge.net[/URL]

12

08.09.2005, 15:15

Natürlich muss die Datenbank laufen, wenn Du Daten bearbeiten willst..
Just because an OS holds 90% of the market doesn`t mean it`s superior.
Remember 90% of all animals are insects.

Wer sucht der findet..

13

09.09.2005, 08:56

danke euch hat jetzt alles geklappt.
ich hab es übrigens mit numeric umgesetzt.
vorsicht freilaufender noobie

Thema bewerten