Announcement

Collapse
No announcement yet.

Update auf PrimaryKey

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Update auf PrimaryKey

    <PRE>Nemen wir mal an ich habe eine tabelle "xyz" mit einer spalte "id" (PrimaryKey).
    <I> CREATE TABLE xyz(id INTEGER NOT NULL, PRIMARY KEY(id)) </I>
    <BR>
    diese tabelle enthält folgende daten:
    <BR>
    500 <I> INSERT INTO xyz VALUES(500) </I>
    600 <I> INSERT INTO xyz VALUES(600) </I>
    700 <I> INSERT INTO xyz VALUES(700) </I>
    <BR>
    nun will ich alle werte mit 100 subtrahieren -> kein Problem. <I> UPDATE xyz SET id = (id - 100) </I>
    <BR>
    nun will ich alle werte mit 100 addieren -> geht nicht. <I> UPDATE xyz SET id = (id + 100) </I>
    <BR>
    Frage: wieso?
    <BR>
    Klar IB macht vermutlich folgendes mit der subtraktion:
    <BR>
    500 - 100 => 400 (noch nicht vorhanden)
    600 - 100 => 500 (nicht mehr vorhanden)
    700 - 100 => 600 (nicht mehr vorhanden)
    <BR>
    und bei der addition
    <BR>
    500 + 100 => 600 (ohh ohh, 600 ist schon in der DB! = Fehler)
    <BR>
    wie kriege ich jetzt das IB dazu mir das torzdem zu machen?
    <BR>
    mann müsste irgendwie das update in der reihenfolge umkehren...
    <BR>
    so dass:
    <BR>
    700 + 100 => 800 (noch nicht vorhanden)
    600 + 100 => 700 (700 wurde ja vorhin gerade mit 800 überschrieben)
    500 + 100 => 600 (auch nicht mehr vorhanden)
    <BR>
    Geht das??
    <BR>
    Gruss
    </PRE>

  • #2
    Hallo Urs,

    mit den Umweg über eine Stored Procedure ist es möglich.

    Die SP mach ein <b>"For Select"</b> auf die Tabelle mit einer passenden <b>"order by<b>-Klausel". Für den jeweils selektierten Datensatz wird dann das Update einzeln durchgeführt.

    Gruß

    Torste

    Comment

    Working...
    X