SQL

将临时表重命名为物理表

发布于 2021-05-10 21:18:26

我可以做这样的事情吗?

create table #tbl_tmp (col1 int)

insert into #tbl_tmp select 3

exec sp_rename '#tbl_tmp','tbl_new'
关注者
0
被浏览
92
1 个回答
  • 面试哥
    面试哥 2021-05-10
    为面试而生,有面试问题,就找面试哥。

    不。

    如果您从其他数据库中运行此数据库tempdb,则无法获得

    在当前数据库中找不到名称为“ #tbl_tmp”的项目…。

    这并不奇怪,因为所有数据页等都在tempdb数据文件中,因此您将无法重命名它,使其突然成为另一个数据库中的永久表。

    如果您从中运行此程序,tempdb则会得到

    为过程’sys.sp_rename’指定了无效的参数或选项。

    如果您这样做EXEC sp_helptext sp_rename并查看定义,则不允许使用的相关代码是

    --------------------------------------------------------------------------  
     --------------------  PHASE 32:  Temporay Table Isssue -------------------  
     --------------------------------------------------------------------------  
     -- Disallow renaming object to or from a temp name (starts with #)  
     if (@objtype = 'object' AND  
      (substring(@newname,1,1) = N'#' OR  
      substring(object_name(@objid),1,1) = N'#'))  
     begin  
      COMMIT TRANSACTION  
      raiserror(15600,-1,-1, 'sys.sp_rename')  
      return 1  
     end
    

    为什么不首先创建永久表,然后重命名呢?



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看