У меня есть таблица со столбцами NAME и ID. Например,SQL: обменять ВЗАИМНО ЭКСКЛЮЗИВНЫЕ столбцы?
[ID] [NAME]
1 John Lee
2 Ben Smith
Я хочу переключить ИМЯ двух пользователей (их идентификаторы останутся прежними). Тем не менее, база данных, с которой я работаю, не позволяет двум пользователям иметь одно и то же NAME (даже NULL), поэтому я не могу установить «Ben Smith» на «John Lee», если у пользователя нет NAME «John Lee».
Я полагаю, что я мог бы просто сделать это с помощью PHP и сохранить оба их имени в переменной, а затем сделать запрос, чтобы изменить два ИМЯ на что-то случайное, а затем назначить замененные ИМЯ пользователям.
Но есть ли более элегантный способ?
Вы пробовали использовать блок транзакции? – caskey
Нет. Что это? –
У реализации SQL часто есть способ создать «транзакцию», которая содержит несколько сложных шагов, которые все вступают в силу в конце транзакции. Многое зависит от поставщика вашего SQL-сервера и того, что его синтаксис позволяет - например, подавлять проверки целостности до тех пор, пока не будут сделаны оба изменения. – caskey