SQL 服务器:说明临时 table 存在,但不在 INFORMATION_SCHEMA 中

SQL Server : stating temp table exists, but it's not in INFORMATION_SCHEMA

我正在使用以下内容检查并创建 table:

IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'tempdb' AND TABLE_NAME LIKE '#tmp_items%')
    CREATE TABLE #tmp_items 
    (
        id               INT IDENTITY(1,1),
        inv_mast_uid     INT DEFAULT NULL,
        src_invoice      BIT DEFAULT NULL,
        src_invoice_date DATETIME DEFAULT NULL,
        src_order        BIT DEFAULT NULL,
        src_order_date   DATETIME DEFAULT NULL
    )
ELSE
    TRUNCATE TABLE #tmp_items

我收到以下错误:

There is already an object named '#tmp_items' in the database.

如果它存在,它应该截断 table....

当我查看 INFORMATION_SCHEMA 时,我什么也没看到:

SELECT DISTINCT TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES

Returns:

ssb
UTIL
mbl
DataSync
dbo

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%tmp_items%'

Returns 没什么。

这没有意义,我不知所措...我什至断开了与服务器的连接(应该清除了临时 tables)并重新连接,但仍然得到相同的结果错误。

我是不是漏掉了什么?

无论您如何切片,您都将难以有条件地截断或创建像这样的临时文件 table。将其更改为删除临时 table(如果存在),然后始终创建它。这样就简单多了。

IF OBJECT_ID('tempdb..#tmp_items%') is not null
    drop table #tmp_items

CREATE TABLE #tmp_items 
(
    id                  int         identity(1,1),
    inv_mast_uid        int         DEFAULT NULL,
    src_invoice         bit         DEFAULT NULL,
    src_invoice_date    datetime    DEFAULT NULL,
    src_order           bit         DEFAULT NULL,
    src_order_date      datetime    DEFAULT NULL
)