Переключение значений двух полей/столбцов в SQL Server без третьей переменной

В результате ошибки при импорте в тестовую таблицу 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, или это представляет собой какую-то другую основную грань реляционной теории, которую я упускаю?

9
задан TelJanini 13 October 2011 в 14:51
поделиться