Половина вас не понимает переменные и транзакции
Пересказ статьи Brent Ozar. Half Of You Don’t Understand Variables and Transactions
Уважают ли табличные переменные и обычные переменные транзакции? Если я установлю значение переменной во время выполнения транзакции, а затем выполню откат, что произойдет?
DECLARE @MySalary INT = 100000;
BEGIN TRAN
SET @MySalary = @MySalary * 2;
ROLLBACK;
SELECT @MySalary;
Я провел голосование на Twitter
Я не могу заставить себя пошутить над народным голосованием, поэтому я просто укажу, что правильным ответом является 200000.
А что насчет табличных переменных?
Если я выполню этот запрос, как много строк вернет SELECT?
DECLARE @People TABLE (Name VARCHAR(50));
BEGIN TRAN
INSERT INTO @People VALUES ('Bill Gates');
INSERT INTO @People VALUES ('Melinda Gates');
INSERT INTO @People VALUES ('Satya Nadella');
ROLLBACK
SELECT * FROM @People;
Вот результаты голосования на Twitter:
Еще меньше вас знает, что правильный ответ - 3 строки.
Переменные игнорируют транзакции
Я могу понять, почему так много людей не знает, поскольку ничего этого нет на странице документации, посвященной переменным. Я шучу, конечно. Мы с вами знаем, что вы не читаете документацию.
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой