gpt4 book ai didi

sql - 如何正确检查SQL Server 2005中是否存在临时表?

转载 作者:行者123 更新时间:2023-12-01 19:40:49 24 4
gpt4 key购买 nike

我有一个查询,我从表中插入一些值:

SELECT ID, NAME INTO #tmpTable1
FROM TableOriginal

第一次执行没问题,如果我在MSSMS(Microsoft Sql Server Management Studio)中按F5(运行),就会出现错误:

Msg 2714, Level 16, State 6, Line 4
There is already an object named '#tmpTable1' in the database.

好。我决定在将数据从 TableOriginal 插入到 #tmpTable1 之前使用以下方法进行检查:

IF OBJECT_ID('tempdb.#tmpTable1') IS NOT NULL  
DROP TABLE #tmpTable1

不工作,错误再次显示如上。

我在 tempdb 数据库中看到以下临时表名称:

dbo.#tmpTable1__________________0000007
为什么?每次创建临时表(使用第一个查询)时,MSSMS 中都会自动生成表名?

如何删除现有的临时表以创建具有新值的新表?

最佳答案

你已经很接近了 - 你需要在支票上使用两个点:

IF OBJECT_ID('tempdb..#tmpTable1') IS NOT NULL  
**
|
use two dots here!

基本上,这就是说: checkin tempDB,我不关心表采用什么模式

正如 Joe 所说:这不是 100% 正确:它不会检查每个架构 - 它只会检查默认所有者的架构 - 通常是 dbo。所以这也行得通:

IF OBJECT_ID('tempdb.dbo.#tmpTable1') IS NOT NULL  

如果您碰巧在默认所有者以外的架构中创建对象,则需要显式指定您所引用的架构。但 tempDB 中的临时表确实是在 dbo 架构中创建的。

关于sql - 如何正确检查SQL Server 2005中是否存在临时表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11986552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com