WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   postgresql (http://www.wcm.at/forum/showthread.php?t=64517)

NashBridges 28.07.2002 07:09

postgresql
 
hi leute! :cool:
also ich hab da wieder mal ein kleines problem:

es geht um eine postgres datenbank und die tabelle sieht zB so aus:

key data
1 sehr gut
2 gut
3 befriedigend
4 genügend
5 nicht genügend

da der schlüssel eine art priortätenordnung darstellt bezeichnet also der wert des schlüssels die wichtigkeit des datensatzes. ich möchte jetzt zb eine neue bewertung einführen, nehmen wir an "halbwegs gut" und diese soll die wertigkeit 3 bekommen. ich muß jetzt also alle schlüssel >= 3 um eins erhöhen!
ich habe mir gedacht ich mach das mit:

Code:

UPDATE "Table" SET key=key+1 WHERE key>=3;
aber ich krieg dauernd fehlermeldungen, weil die DB logischerweis keine doppelten schlüssel anlegen kann. wie lös ich das problem???

BITTE HILFE!!:confused:

sagi 28.07.2002 12:19

So wie du das machst wird 3 auf 4 geändert und es entsteht ein Fehler. Probiers einfach mal in die andere Richtung:

5 -> 6
4 -> 5
3 -> 4
neuer Eintrag: 3

Dabei sollte kein Fehler auftreten.

Ich bin mir allerdings nicht sicher, ob ORDER BY bei UPATE verwendet werden darf. Wenn nicht, dann frag einfach den höchsten Datendatz mit SELECT ab und geh dann in einer Schleife runter.

mfg

c.

NashBridges 28.07.2002 13:08

also update und order by geht amal nicht. das mit select und mit der schleife hab ich mir auch schon überlegt, aber das muß doch irgedwie einfacher gehn oder?

pc.net 28.07.2002 13:18

*) unique-key constraint disablen
*) update durchführen
*) unique-key constraint enablen

nachdem sich mit großer wahrscheinlichkeit auch noch felder in anderen tabellen auf den unique-key beziehen werden (foreign-keys) müssen die entsprechenden foreign-key constraints auch vorübergehend disabled werden ...

sonst bleibt nur die möglichkeit das update mittels einer schleifenverarbeitung (s.o.) durchzuführen ...


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag