在临时表的指定字段前面插入字段
摘要:在临时表的指定字段前面插入字段
在临时表的指定字段前面插入字段
问题描述:
使用下面的代码创建一个临时表,怎么样才能在‘长度’字段之前插入一个字段?
create table #temp(CODE varchar(50),长度 varchar(50),颜色 varchar(50), 合计 varchar(50))
/*- 一般来说,列位置不重要,处理的时候写列的列表就行了。如果一定要处理,则参考下面的示例-*/
--创建临时表
create table #temp(CODE varchar(50),长度 varchar(50),颜色 varchar(50), 合计 varchar(50))
--添加一列 alter table #temp add 新加字段 varchar(50)
go
--调整列的位置,把新加字段移动到长度的前面
EXEC sp_configure ’allow updates’,1
RECONFIGURE WITH OVERRIDE
go
update a set
colid=case when a.colid=c.colid then b.colid else a.colid+1 end,
colorder=case when a.colid=c.colid then b.colid else a.colid+1 end
from tempdb.dbo.syscolumns a,
(select colid from tempdb.dbo.syscolumns
where id=object_id(’tempdb.#temp’)
and name=N’长度’) b,
(select colid=max(colid) from tempdb.dbo.syscolumns
where id=object_id(’tempdb.#temp’)) c
where a.id=object_id(’tempdb.#temp’)
and a.colid>=b.colid
go
EXEC sp_configure ’allow updates’,0
RECONFIGURE WITH OVERRIDE
GO
--显示结果
select * from #temp
--删除临时表
drop table #temp
/*--结果
CODE 新加字段 长度 颜色 合计
------- ----------- ------- ------- -------
(所影响的行数为 0 行)
--*/
-----------------------------------------------------------------------------------------
本篇文章摘自网络 在sql2005上验证不可以,sql2000或许可以。
下面的例子是更改sql2000表print_bill的'BillMKID'列的顺序,放到最前面,也未验证是否可以。
下列语句可以调整列的顺序(MSS)
update syscolumns set syscolumns.colid=syscolumns.colid+1 from syscolumns inner join sysobjects on
syscolumns.id=sysobjects.id and sysobjects.name='Print_Bill'
update syscolumns set syscolumns.colid=1 from syscolumns inner join sysobjects on
syscolumns.id=sysobjects.id and sysobjects.name='Print_Bill'and syscolumns.name='BillMKID'
Oracle上可以用BEFORE来指定插入字段的位置。
btw:如果出现 未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作
打开mssql server 属性---》服务器选项----》启用对系统目录的特殊更新 即可