Обмен уникальных индексированных значений столбцов в базе данных - PullRequest
51 голосов
/ 03 августа 2008

У меня есть таблица базы данных, и одно из полей (не первичный ключ) имеет уникальный индекс. Теперь я хочу поменять местами значения в этом столбце для двух строк. Как это можно сделать? Два хака, которых я знаю:

  1. Удалите обе строки и вставьте их заново.
  2. Обновить строки другим значением и поменять местами, а затем обновить до фактического значения.

Но я не хочу идти на это, поскольку они не кажутся подходящим решением проблемы. Кто-нибудь может мне помочь?

Ответы [ 12 ]

1 голос
/ 20 апреля 2012

В SQL Server оператор MERGE может обновлять строки, которые обычно нарушают UNIQUE KEY / INDEX. (Просто проверил это, потому что мне было любопытно.)

Однако вам потребуется использовать временную таблицу / переменную для предоставления MERGE с необходимыми строками.

1 голос
/ 19 марта 2010

Oracle имеет отложенную проверку целостности, которая решает именно это, но она недоступна ни в SQL Server, ни в MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...