# sql server werte swappen beim update-vorgang mit unique-constraints..?



## ruutaiokwu (13. Mrz 2014)

hallo zusammen

kann mir jemand sagen wie ich in einer tabelle mit einem unique-constraint beim update-vorgang die werte tauschen kann, ohne dass der constraint verletzt wird?

das problem ist dass wenn man bspw die werte 7 & 8 vertauschen will, dass man dann beim ersten schritt zwangsläufig den contraint verletzt


ausganszustand:
row1: 7
row2: 8


tauschen, hier muss man zwangsläufig den contraint verletzen:
row1: 7  ODER 8
row2: 7  ODER 8


endzustand:
row1: 8
row2: 7


ich verwende sql server. wie kann ich das realisieren ohne separate swap- oder tmp-tabelle oder den constraint vorübergehend ausser kraft zu setzen??

vielen dank!!


----------



## ruutaiokwu (13. Mrz 2014)

nachtrag: für jeden datensatz wird die update-stored-procedure 1x aufgerufen...

mit einer tmp-tabelle würde man beim erneuten sp-call wohl den kontext/scope verlieren, würde also nix bringen, richtig??


----------



## ruutaiokwu (13. Mrz 2014)

erledigt:


```
UPDATE tEmpExitFactor
    SET
      tEmpExitFactor.Impact = -Impact
    WHERE
      tEmpExitFactor.Impact = (@vintImpact) AND (tEmpExitFactor.PID = @vintPID)
```


was ich nicht erwähnt habe, weil meine frage unnötig kompliziert macht: es handelt sich um einen auf wertepaare (felder "PID" sowie "Impact") ausgerichteten unique-contraint, genauer gesagt ist es sogar ein "unique index"...;-)


"PID" bleibt immer gleich, in meinem 1. beitrag ging es halt nur um "Impact" (mit den beispielwerten 7 u. 8...)


----------

