加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 将临时表重命名为物理表

发布时间:2020-12-12 07:30:31 所属栏目:MsSql教程 来源:网络整理
导读:我可以这样做吗? create table #tbl_tmp (col1 int)insert into #tbl_tmp select 3exec sp_rename '#tbl_tmp','tbl_new' 解决方法 没有. 如果你从tempdb以外的数据库运行它,你会得到 No item by the name of ‘#tbl_tmp’ could be found in the current dat
我可以这样做吗?
create table #tbl_tmp (col1 int)

insert into #tbl_tmp select 3

exec sp_rename '#tbl_tmp','tbl_new'

解决方法

没有.

如果你从tempdb以外的数据库运行它,你会得到

No item by the name of ‘#tbl_tmp’ could be found in the current
database ….

这并不奇怪,因为所有数据页面等都在tempdb数据文件中,因此您无法将其重命名为突然变成其他数据库中的永久表.

如果你从tempdb运行它,你得到

An invalid parameter or option was specified for procedure
‘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) = N'#'))  
 begin  
  COMMIT TRANSACTION  
  raiserror(15600,-1,'sys.sp_rename')  
  return 1  
 end

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读