测试多tempdb环境中是否存在临时表?

nin*_*ded 0 t-sql sybase temp-tables

有没有办法确定是否在会话中创建了特定的临时表而没有引用它创建的tempdb数据库?用户在登录时会分配给特定的tempdb,因此我不知道他们将使用哪个tempdb.

我不需要指定tempdb来从临时表中选择数据,所以我肯定可以看到表是否存在?

Jon*_*han 5

您可以使用object_id检查是否存在临时对象:

SELECT object_id('#tmpTable')
Run Code Online (Sandbox Code Playgroud)

您可以根据需要指定要使用的tempdb,但不必:

SELECT object_id('tempdb..#tmpTable')
Run Code Online (Sandbox Code Playgroud)

值得注意的是,这也适用于全局临时表:

SELECT object_id('##tmpTable')
Run Code Online (Sandbox Code Playgroud)

为了使脚本可以重新运行而不必在最后执行DROP TABLE,我总是在创建临时表之前进行检查和删除.我经常在开发SQL代码时创建表.

IF NULLIF(object_id('#tmpTable'), 0) IS NOT NULL DROP TABLE #tmpTable
CREATE TABLE #tmpTable (
    id int,
    col1 varchar(100)
)
Run Code Online (Sandbox Code Playgroud)