---
title: "Updateproblem med unika nycklar."
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/82736-updateproblem-med-unika-nycklar"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Engine^"
published: "2003-07-25T13:51:19.000Z"
updated: "2003-08-04T06:32:35.000Z"
replies: 3
views: 247
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/82736-updateproblem-med-unika-nycklar"
---

# Updateproblem med unika nycklar.

## #1 — Engine^, 2003-07-25T13:51Z

Jag håller på med en infogningsfunktion, som inte är några problem alls, men i min tabell som ska manipuleras har jag kolumnerna *intMoment, dblArtikelID* som tillsammans är huvudnyckeln. Och om jag har värdena:

```
1    654654
2    654654
3    654654
4    654654
```

och vill infoga en ny 3:a, så måste ju de gamla värdena ökas på med 1. Detta försökte jag lösa med

```
UPDATE tblProcess SET intMoment = intMoment + 1 WHERE intMoment >= 3 AND dblArtikelID = 654654
```

Detta fungerar inte, eftersom det första som händer är att 3 + 1 skapar en  dubblett. Kan jag uppdatera datat i fallande ordning eller något liknande? Först öka på 4 med 1 och sedan 3 osv..

Permalänk: https://www.webforum.nu/p/82736

## #2 — LarsG, 2003-07-25T14:40Z

Vad är det för dbms du har. Om du har ett unique constraint /primärnyckel på kolumnerna så skall det gå att göra den update du skrev. Du kan inte påverka vilken ordning som operationerna utförs i.

Om det inte går så ser jag bara tråkiga lösningar som att ta fram högsta värdet och sedan uppdatera enskilda poster.

Permalänk: https://www.webforum.nu/p/1121061

## #3 — aasah, 2003-07-29T12:01Z

Re: Updateproblem med unika nycklar.

> **Engine^ skrev:**
>
> Jag håller på med en infogningsfunktion, som inte är några problem alls, men i min tabell som ska manipuleras har jag kolumnerna som tillsammans är huvudnyckeln. Och om jag har värdena:
>
>
> ```
> 1    654654
> 2    654654
> 3    654654
> 4    654654
> ```
>
> och vill infoga en ny 3:a, ...

Hur många tabeller har du? Och vad menar du med en ny trea? :q

Om du bara har denna tabell och du vill att det efter ändring ska bli:

```
1    654654
2    654654
3    654654
3    787878
4    654654
```

så behövs ingen ändring alls, däremot ett insert av den nya kombinationen. intMoment måste inte vara unikt, däremot måste **kombinationen** *intMoment, dblArtikelID* vara unik då de **tillsammans** bildar nyckel.

Permalänk: https://www.webforum.nu/p/1123026

## #4 — Engine^, 2003-08-04T06:32Z

> **LarsG skrev:**
>
> Vad är det för dbms du har. Om du har ett unique constraint /primärnyckel på kolumnerna så skall det gå att göra den update du skrev. Du kan inte påverka vilken ordning som operationerna utförs i.
> 
> Om det inte går så ser jag bara tråkiga lösningar som att ta fram högsta värdet och sedan uppdatera enskilda poster.

Ok, tackar för upplysningen. Tyvärr ser det alltså ut som att jag måste använda den tråkiga metoden :l

Permalänk: https://www.webforum.nu/p/1129257

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/82736-updateproblem-med-unika-nycklar
