В дополнение к ответу Энди Ирвинга
это сработало для меня (на SQL Server 2005) в аналогичной ситуации
где у меня есть составной ключ, и мне нужно поменять поле, которое является частью уникального ограничения.
ключ: PID, LNUM
rec1: 10, 0
rec2: 10, 1
rec3: 10, 2
и мне нужно поменять местами LNUM, чтобы получить результат
ключ: PID, LNUM
rec1: 10, 1
rec2: 10, 2
rec3: 10, 0
Необходимый SQL:
UPDATE DOCDATA
SET LNUM = CASE LNUM
WHEN 0 THEN 1
WHEN 1 THEN 2
WHEN 2 THEN 0
END
WHERE (pID = 10)
AND (LNUM IN (0, 1, 2))