Какова механика вставленной таблицы в SQL Server? - PullRequest
3 голосов
/ 27 июля 2011

У меня был разговор с моим менеджером о поведении вставленной таблицы в Sql Server. Он кратко объяснил мне, что его понимание, к которому я пришел к выводу, звучит конкретно. Он занятой человек и не всегда успевает вдаваться в подробности. Я хотел бы больше узнать о том, как работают вставленные таблицы.

Когда есть несколько вставленных таблиц, что делает их уникальными, являются ли они псевдонимами?

Затем они отбрасываются при закрытии каждого потока?

Они даже, так сказать, специфичны для отдельных потоков?

Я понимаю, что это может быть не идеальный вопрос для сайта, но здесь есть много знаний между вами полезной партии.

Приветствия

Ответы [ 2 ]

5 голосов
/ 27 июля 2011

Они относятся не только к конкретным потокам, но и к конкретным действиям вставки, обновления или удаления. Таким образом, если в одном и том же хранимом процессе вы вставили в одну и ту же таблицу двумя разными шагами, у каждого из них будет свой собственный экземпляр вставленных и удаленных файлов, характерный только для этого действия. Если бы другие выполняли действия одновременно, у них были бы собственные версии таблиц, из которых они могли бы извлечь. Но вставленные и удаленные таблицы ориентированы на пакет. Если вы обновите 10 000 000 записей, это будет количество записей во вставленных и удаленных таблицах. Если вы сделаете курсор, который вставляет 1 запись и перебирает 1000 000 раз, вы получите одну запись в 1 000 000 различных версий вставленных и удаленных (что, конечно, было бы наихудшим способом выполнения задачи). Важно понимать, что они содержат пакет записей, поскольку это означает, что триггеры ALL должны быть записаны с предположением, что может быть задействовано более одной записи.

1 голос
/ 27 июля 2011

Виртуальные таблицы «вставлены» и «удалены» только один раз за один раз и в контексте. Может использоваться в триггерах или в разделе «ВЫХОД».

И "вставленные", и "удаленные" таблицы имеют одинаковую схему (в одном и том же месте), но могут иметь разное количество записей.

«Вставленная» таблица содержит новые записи (вставленные строки, обновленные строки с новыми значениями), а «удаленная» таблица содержит старые записи (удаленные строки, строки обновления со старыми значениями).

Область действия этих таблиц относится к условию триггера или OUTPUT. Таким образом, если вы выполните две / три / ... команды, «вставленные» / «удаленные» таблицы будут другими.

Использование вставленных и удаленных таблиц

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...