В результате ошибки при импорте в тестовую таблицу с именем CUSTOMERS я обнаружил, что мне нужно переключить значения двух столбцов в SQL Server.
Я по ошибке импортировал соответствующие значения для LASTNAME и FIRSTNAME в противоположные поля (то есть фамилия клиента была импортирована в имя и наоборот). Чтобы исправить это, я запустил следующий запрос в SQL Server 2008 R2, конечно, не ожидая, что он будет работать:
UPDATE CUSTOMERS
SET LASTNAME=FIRSTNAME, FIRSTNAME=LASTNAME
Удивительно, но это сработало! Мой ограниченный опыт программирования (средняя школа, несколько курсов в колледже) всегда следовал парадигме, согласно которой переключение двух значений требует наличия третьей переменной, чтобы «удерживать» значение одного из начальных значений. Другими словами, я ожидал выполнить следующий запрос:
UPDATE CUSTOMERS
SET SOMEOTHERFIELD = LASTNAME
SET LASTNAME = FIRSTNAME
SET FIRSTNAME = SOMEOTHERFIELD
Такое поведение наблюдается только в SQL Server 2008 R2, или это представляет какой-то другой основной аспект реляционной теории, который мне не хватает?