为什么 DROP TABLE 在 SELECT INTO 之前似乎没有生效?

2023-11-21

下面的 SQL 查询让我感到困惑:

select 1 as FIELD into #TEMP
drop table #TEMP
select 1 as FIELD into #TEMP

When I run it from SQL Server Management Studio session window (pressing F5 to the whole query, as a group), I get the following error:

消息 2714,第 16 级,状态 1,第 3 行
数据库中已有一个名为“#TEMP”的对象。

注意该表#TEMP在执行查询之前不存在。

我认为代码不应该产生任何错误,因为第 2 行正在删除临时表。但执行第 3 行时,好像 drop 并未生效。

我的问题:

  1. 为什么会发生错误?
  2. 如何修复查询,使其按预期执行?

附言。上面的查询是我的现实世界查询的简化,它显示出相同的症状。

PS2。不管这是否是一个合理的编程实践(正如 Sean 在他的评论中暗示的那样),这种意想不到的行为促使我寻找有关如何解析这些查询的信息,希望这些知识将来对我有所帮助。


我发现现有表的查找是不同的:

select 1 as FIELD into #TEMP
drop table #TEMP

当你使用into这些命令之后的语句:

select 1 as FIELD into #TEMP

错误是:

数据库中已有一个名为“#TEMP”的对象。

当你使用select on #TEMP在这些命令之后:

select * from #TEMP

错误是:

对象名称“#TEMP”无效。

所以,在第一种情况下,有一个对象#TEMP名称,在另一种情况下,没有一个对象#TEMP name !.

来自的重要说明technet.microsoft is:

DROP TABLE 和 CREATE TABLE 不应在同一批处理中的同一表上执行。否则可能会出现意外错误。


在通过 SQL Server 数据库引擎删除表的注释中:

SQL Server 数据库引擎将实际的页释放及其关联的锁推迟到事务提交之后。

所以使用时出现第二个错误select声明可能涉及实际的页面释放以及使用时的第一个错误into声明可能涉及关联锁与事务提交之间的持续时间.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 DROP TABLE 在 SELECT INTO 之前似乎没有生效? 的相关文章

  • TSQL - 执行CLR权限

    我从 CLR net Assembly 获得了一个 sql 过程 该过程在执行时返回错误 Msg 6522 Level 16 State 1 Procedure sp HelloWorld Line 0 A NET Framework er
  • Sql批量复制截断小数

    当我使用批量复制将十进制值从 C DataTable 插入 Sql Server 2005 时 值会被截断而不是四舍五入 DataTable 中的数据类型为 Decimal 数据库中的数据类型为Decimal 19 3 数据表中的值为 1
  • Lucene.Net 下划线导致令牌分裂

    我已将 MsSqlServer 数据库表 视图和存储过程编写到目录结构中 然后使用 Lucene net 对其进行索引 我的大多数表 视图和过程名称都包含下划线 我使用标准分析器 如果我查询名为 tIr 的表例如 发票 tnWtn01 我收
  • 如何在SQL Compact Edition中导入数据? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我似乎没有找到合适的工具 也没有找到
  • SQL Server查询麻烦,多对多关系

    不知道如何用一行字来表达这个问题 对标题表示歉意 我的数据库中有3个表 例如 Shop Item 商店库存 Shop 和 Item 具有多对多关系 因此 ShopStock 表将它们链接起来 ShopStock 中的字段是 ID ShopI
  • 将子查询的结果插入表中并带有常量

    相关表格的概要如下 我有一个表 我们称之为联接 它有两列 都是其他表的外键 我们将这两列称为 userid 和buildingid 因此 join 看起来像 join userid buildingid 我基本上需要在这个表中插入一堆行 通
  • 如何使用 PHP 从 MSSQL 读取图像字段

    我正在创建一个网站 需要同步从离线 MSSQL 服务器读取的在线 MySQL 数据库 除图像字段外 所有通信和从 MSSQL 读取所有字段均工作正常 我已经使用 PHP 和 Mysql 一段时间了 知道如何向 MySQL 数据库插入 检索图
  • 从VBA中的数组批量插入到sql中

    我正在尝试在 Excel 中构建一个按钮 将所选区域上传到 SQL Server 中的表中 第一行将自动视为列标题 这件事该怎么继续下去呢 我想要的是简单和超快的上传 这是我的想法 我将选择选定的区域 然后将其保存为 txt 文件 然后对其
  • INFORMATION_SCHEMA 与 sysobjects

    在 SQL Server 中 INFORMATION SCHEMA 和 sysobjects 之间有什么区别 其中一个是否比另一个提供更多信息 或者它们通常用于不同的用途 sysobjects 与 sys objects 相同吗 如果不是
  • Invoke-Sqlcmd 运行脚本两次

    我遇到了一个非常奇怪的问题并且可以重复 基本上 我使用invoke sqlcmd通过使用 inputfile来调用脚本文件 但是如果脚本文件存在一些执行错误 例如插入到列不应为空的表中 则脚本文件将被执行两次 我也可以从探查器中看到这两个执
  • .NET:SqlDataReader.Close 或 .Dispose 导致超时过期异常

    当尝试在 SqlDataReader 上调用 Close 或 Dispose 时 我收到超时过期异常 如果您有到 SQL Server 的 DbConnection 您可以使用以下命令自行重现它 String CRLF r n String
  • 在SQL Server中仅获取浮点数的小数部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 SQL Server 2008
  • t sql中的相对路径?

    如何获取t sql中的相对路径 举个例子 sql文件位于文件夹中D temp 我想获取文件夹中文件hello txt的路径D temp App Data 如何使用相对路径引用 假设我正在 SQL Server Management Stud
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • 如何在 SQL Server 中什么都不做[重复]

    这个问题在这里已经有答案了 可能的重复 T SQL 中的空语句 https stackoverflow com questions 3234871 empty statement in t sql 我怎样才能让它在 SQL Server 中
  • SQL Server 使用通配符加入并在第一个匹配处停止

    IF OBJECT ID tempdb TABLE1 IS NOT NULL DROP TABLE TABLE1 IF OBJECT ID tempdb TABLE2 IS NOT NULL DROP TABLE TABLE2 CREATE
  • SQL - 为每条记录调用存储过程

    我正在寻找一种方法来为 select 语句的每条记录调用存储过程 SELECT SomeIds SELECT spro Id FROM SomeTable as spro INNER JOIN Address addr ON addr Id
  • SQL Server 转换选择一列并将其转换为字符串

    是否可以编写一条从表中选择列并将结果转换为字符串的语句 理想情况下 我希望有逗号分隔的值 例如 假设 SELECT 语句看起来像这样 SELECT column FROM table WHERE column lt 10 结果是一列包含值的
  • SQL Server 差异工具

    在一个团队中工作时 人们很容易修改开发 SQL Server 表并忘记它 或者准备部署更改但必须等待部署 这使得我们的开发表和活动表不一致 从而在推送存储过程时导致问题 是否有一个工具可以让我输入 SPROC 名称并让它检查开发数据库和实时
  • SQL Group BY,每个组的前 N ​​个项目

    我有一个 SQL 查询 可以获取给定商店中销量最高的 5 件商品 SELECT TOP 5 S UPCCode SUM TotalDollarSales FROM Sales S WHERE S StoreId 1 GROUP BY S U

随机推荐

  • iOS 分发证书过期会怎样?

    我现在正在向 iTunes connect 提交 iPhone 应用程序 我有一个关于分发证书的问题 如果分发证书过期会发生什么 用户购买的应用程序在证书过期后会停止运行或崩溃吗 或者分发证书过期后用户无法安装应用程序或无法从App Sto
  • 是否可以在不使用偏移量的情况下将指针存储在共享内存中?

    当使用共享内存时 每个进程可以将共享区域映射到其各自地址空间的不同区域 这意味着当在共享区域中存储指针时 您需要将它们存储为偏移量共享区域的开始 不幸的是 这使原子指令的使用变得复杂 例如 如果您尝试编写一个无锁算法 例如 假设共享内存中有
  • 如何使用 Bing 地图检索邮政地址的纬度和经度?

    我希望能够检索给定地址的地理坐标 纬度和经度 我希望如果我有完整的地址 街道地址 城市 州 邮政编码 我可以做到这一点 如果重要的话 我正在使用 Bing 地图 我得到的框架代码是这样的 fullAddress AddPushpin 和 g
  • 使用node.js读取Excel文件

    好的 所以我正在使用FileUploader将我的文件从 Angular 上传到我的模块REST API var uploader scope uploader new FileUploader url api getUrl uploadC
  • JavaScript:如何找出浏览器窗口中视口的宽度和高度?

    如何找出浏览器窗口中视口的宽度和高度 如何找出有多少文档向下和向右滚动 尝试这个函数 并在需要时调用它 function getViewPortSize var viewportwidth var viewportheight Standa
  • Emberjs 异步路由

    我的问题与问题相关 1183 and 1268emberjs 的 我在路线上有动态元素 如果我通过应用程序导航 一切都可以 问题是当我重新加载页面或输入网址时 在这种情况下 应用程序进入反序列化函数并通过其 id 加载和对象 但此加载是异步
  • 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

    什么是ArrayIndexOutOfBoundsException意思是我该如何摆脱它 下面是触发异常的代码示例 String names tom bob harry for int i 0 i lt names length i Syst
  • 存储过程返回错误的标量值 -1,而不是返回值

    我正在尝试从存储过程返回标量值 我实际上想返回新创建的记录的 ID 但我已将问题简化为需要一个存储过程int并尝试返回相同的内容int 这始终返回 1 非常感谢您的帮助 Web API 控制器调用 var idtest dbconn my
  • 使 JComponent 适合/缩放到正在打印的页面

    我正在尝试缩放我的组件 以便它可以适合单个打印页面 纵向或横向 gDiagram getComponent 是我要打印的组件 JPanel 这是我到目前为止所得到的基于如何打印单个 JPanel 的内容 Prints the diagram
  • 如何使用重载的显式转换运算符?

    我在 C 中定义了一个类型 如下所示 struct F public static explicit operator F long value public static explicit operator long F value pu
  • 将 Python 项目提交到 Dataproc 作业

    我有一个 python 项目 其文件夹具有以下结构 main directory lib lib py run script py script py is from lib lib import add two spark SparkSe
  • 用Java模拟文件

    我正在尝试为采用字符串文件名的方法编写单元测试 然后打开文件并从中读取 因此 为了测试该方法 我考虑编写一个文件 然后调用我的方法 但是 在构建场中 不可能将文件任意写入磁盘 是否有一种标准方法可以在单元测试中 模拟 真实文件 我发现Moc
  • JavaFX - 使 ScrollPane 自动滚动

    我在 ScrollPane 中有一个标签 我正在循环中更新标签 在另一个线程中 如果用户没有将 ScrollPane 保持在某个位置 如何更新 ScrollPane 使其向下滚动 不是横向滚动 这将手动完成 有一个设置器吗 要将 Scrol
  • 如何隐藏操作栏中的向上按钮

    我想做一个编辑模式 采用平板电脑 Gmail 应用程序的风格 如果用户按下操作栏上的编辑按钮 我想向他 她显示一个操作视图 该视图左侧有一个完成按钮 右侧有一个删除按钮 我这里有一个无需 actionbarsherlock 即可工作的示例
  • 如何正确实现 IDisposable

    作为一名开发人员 我见过很多 C 代码 它们试图通过将变量设置为 null 或在自己的类 Dispose 方法中调用类 例如 DataSet 上的 Dispose 来帮助 GC 我一直想知道是否需要在托管环境中实施它 这段代码的设计模式是否
  • Rails javascript 仅在重新加载后才起作用

    问题正是标题所说的 javaScript 位于资产管道中 即 assets javascripts myfile js coffee 在 application js 中我有 require jquery require jquery uj
  • 我们如何获取 IAM 用户、他们的组和策略?

    我需要获取所有 aws 用户及其相应的组 策略 然后获取是否为他们激活了 MFA 谁能告诉我如何通过 aws cli 或 boto 来完成它 我有一个脚本可以提取 aws 中的所有用户 import boto3 from boto3 imp
  • 猫鼬精益查询,虚拟值未显示

    我在猫鼬上设置了以下架构 我使用版本 3 6 17 var PostSchema new Schema id type String required true index unique true video type String def
  • 如何从浅克隆中有效地进行 git fetch

    We use git 分发操作系统并使其保持最新 我们无法分发完整的存储库 因为它太大 gt 2GB 因此我们一直使用浅克隆 300M 然而最近 当从浅克隆中获取时 它现在无法有效地获取整个 gt 2GB 存储库 这是对部署带宽的一种难以忍
  • 为什么 DROP TABLE 在 SELECT INTO 之前似乎没有生效?

    下面的 SQL 查询让我感到困惑 select 1 as FIELD into TEMP drop table TEMP select 1 as FIELD into TEMP When I run it from SQL Server M