有没有办法在不引用创建临时表的临时数据库的情况下,确定是否在会话中创建了特定的临时表?用户在登录时被分配到一个特定的tempdb,所以我不知道他们将使用哪个tempdb。
我不需要指定tempdb来从临时表中选择数据,所以我肯定可以看到表是否存在?
发布于 2008-10-10 08:00:29
在我看来,你不应该在这里使用临时表...这些表看起来更像是常规表(可能带有用户标识符)。这里的场景是什么?
注意,以这种方式使用临时表可能会对优化器/查询缓存造成严重破坏-它将不得不进行大量的重新编译,因为#FOO的含义会发生很大的变化-每次调用都会发生很大的变化。
发布于 2008-12-10 14:13:20
您可以使用object_id检查是否存在临时对象:
SELECT object_id('#tmpTable')如果需要,您可以指定要使用的tempdb,但不必这样做:
SELECT object_id('tempdb..#tmpTable')值得注意的是,这也适用于全局临时表:
SELECT object_id('##tmpTable')为了使脚本可重新运行而不必在最后执行DROP table,我总是在创建临时表之前执行检查和drop。我经常在开发SQL代码时保留创建的表。
IF NULLIF(object_id('#tmpTable'), 0) IS NOT NULL DROP TABLE #tmpTable
CREATE TABLE #tmpTable (
id int,
col1 varchar(100)
)https://stackoverflow.com/questions/189708
复制相似问题