Skip to content

Половина вас не понимает переменные и транзакции

Пересказ статьи 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 строки.



Переменные игнорируют транзакции


Я могу понять, почему так много людей не знает, поскольку ничего этого нет на странице документации, посвященной переменным. Я шучу, конечно. Мы с вами знаем, что вы не читаете документацию.
Категории: T-SQL

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.