SQL Server中插入表的机制是什么?

SQL Server中插入表的机制是什么?,sql,sql-server-2008,Sql,Sql Server 2008,我一直在与经理讨论Sql Server中插入表的行为。他向我简要地解释了他的理解,我的结论是,这听起来很具体。他是一个忙碌的人,并不总是有时间去研究大量的细节。我想进一步了解插入表的工作原理 当有多个插入表时,是什么使它们唯一,它们是否有别名 它们会在每个线程结束时被丢弃吗 可以说,它们是特定于线程的吗 我很感激这可能不是一个理想的问题的网站,但有一个丰富的知识在这里你们之间的帮助很多 干杯虚拟表“插入”和“删除”在同一时间和上下文中仅出现一次。它可以用在触发器或输出子句中 “inserted”

我一直在与经理讨论Sql Server中插入表的行为。他向我简要地解释了他的理解,我的结论是,这听起来很具体。他是一个忙碌的人,并不总是有时间去研究大量的细节。我想进一步了解插入表的工作原理

当有多个插入表时,是什么使它们唯一,它们是否有别名

它们会在每个线程结束时被丢弃吗

可以说,它们是特定于线程的吗

我很感激这可能不是一个理想的问题的网站,但有一个丰富的知识在这里你们之间的帮助很多

干杯

虚拟表“插入”和“删除”在同一时间和上下文中仅出现一次。它可以用在触发器或输出子句中

“inserted”和“deleted”表都有相同的模式(在相同的位置),但可以有不同的记录计数

“插入”表包含新记录(插入的行、使用新值更新的行),而“删除”表包含旧记录(删除的行、使用旧值更新的行)

这些表的作用域适用于触发器或输出子句。所以,如果你执行2/3/。。。命令,则“插入的”/“删除的”表将不同


它们不仅是特定于线程的,而且特定于特定的插入、更新或删除操作。因此,如果在同一个存储过程中,您在两个不同的步骤中插入到同一个表中,那么每个步骤都有自己的inserted和deleted实例,该实例仅特定于该操作。如果其他人同时执行操作,他们将有自己版本的表可供提取。但是插入和删除的表是面向批处理的。如果更新10000000条记录,即插入表和删除表中的记录数。如果光标插入1条记录并循环10000000次,则在10000000个不同版本的inserted和deleted中会得到一条记录(这当然是执行任务的最糟糕方式)。重要的是要理解它们包含一批记录,因为这意味着所有触发器都必须在假设可能涉及多个记录的情况下编写

你能详细解释一下“插入表格”的意思吗?你指的是临时桌子吗?您可能需要提供一个简短的代码示例,这样就不会有混淆的可能。很抱歉,我的意思就是不清楚!这只是一个关于临时表(插入)性质的一般性问题。事后看来,这并不是很重要,还有其他问题需要回答,比这个问题更重要。只是想对事情的运作方式有一个很好的了解!你指的是什么?@AkashM,我是,是的!感谢TCK,我确实了解它们是如何使用的,以及可以包含什么样的数据,如果它们是线程特定的,当多个进程/触发器/正在运行时,更是如此,如果我们在调用所包含的数据时简单地将它们称为插入的,那么每一个都是唯一的,如果您明白我的意思的话?