T-SQL ... Обозначения - PullRequest
       31

T-SQL ... Обозначения

0 голосов
/ 19 октября 2018

При поиске способов оптимизации массовых обновлений для SQL Server я наткнулся на следующий запрос, который работает правильно, но у меня возникают трудности с пониманием работы нотации «...» в следующем фрагменте кода c #:

command.CommandText = "CREATE TABLE #TmpTable(...)";
command.ExecuteNonQuery();

command.CommandText = "UPDATE T SET ... FROM " + tableName + " T INNER JOIN #TmpTable Temp ON ...; DROP TABLE #TmpTable;"
command.ExecuteNonQuery();

1 Ответ

0 голосов
/ 19 октября 2018

В коде была ошибка, из-за которой таблица назначения обновлялась напрямую, а не сначала записывалась во временную таблицу.Код ссылки использовал многоточие (...) в качестве заполнителя, но по какой-то причине мой код не смог сгенерировать исключение, где он должен был сделать.Исправленный фрагмент должен выглядеть следующим образом:

command.CommandText = "CREATE TABLE #TmpTable(Id int, x int)";
command.ExecuteNonQuery();

// Insert updated rows read from 'tableName' into #TmpTable

command.CommandText = "UPDATE T SET T.x = Temp.x FROM " + tableName + " T INNER JOIN #TmpTable Temp ON T.Id = Temp.Id; DROP TABLE #TmpTable;"
command.ExecuteNonQuery();
...