#temp表沒有被刪除

問題描述 投票:1回答:2

我有這個代碼應該刪除臨時表,如果它存在捕鱼游戏能赚钱的,但我仍然收到一個錯誤:Cannot drop the table '#jobsconsumed', because it does not exist or you do not have permission.有人可以幫我嗎?我的I.T. admin不認為這是權限問題。

IF (SELECT object_id('TempDB.#jobsconsumed')) IS NULL
    BEGIN
    DROP Table #jobsconsumed
END 
sql sql-server-2008 tsql
2個回答
3
投票
IF (SELECT object_id('TempDB.#jobsconsumed')) IS NULL
    BEGIN
    DROP Table #jobsconsumed
END 

只有當TempTable存在時,上面的代碼才會進入Begin子句。

要檢查和刪除TempTable,請按以下方式正確

IF object_id('Tempdb..#test') is Not null  
 is same as
  IF object_id('Tempdb.dbo.#test') is Not null  
Drop Table #test

在這種情況下不需要Begin和END子句捕鱼游戏能赚钱的,因為IF將在true時執行立即語句

關于TEMP表的模式方面的一些測試..

  use tempdb; 
 create schema hr
 create table hr.#t( c int) --this will work
 create table #t( c int) --this will fail
 create table #t1 --no schema ,so it will create a temp table in DBO Schema by default.
 --To drop the table
 drop table #t --this will drop across all schemas

1
投票

這適用于MS SQL 2017

use tempdb
go
IF OBJECT_ID(N'tempdb..#yourtemptable', N'U') IS NOT NULL   
DROP TABLE #yourtemptable;  
GO  

推薦問答