有一个表A,有很多字段,写语句创建临时表太麻烦,就
if object_id('Tempdb..#TreeInfo') is not null
drop table #TreeInfoSELECT * INTO #TreeInfo
FROM ( SELECT * from Customers where 1<>1 )AS treeinfo这样创建了一个临时表在Customers表中有一个tmpID是自增列,非主键然后执行
insert into #TreeInfo
SELECT * from [Customers]
提示
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'#TreeInfo'中的标识列指定显式值。
然后执行
SET IDENTITY_INSERT #TreeInfo ON
insert into #TreeInfo
SELECT * from [Customers]依旧提示
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'#TreeInfo'中的标识列指定显式值。然后执行alter table #TreeInfo drop column TmpID
alter table #TreeInfo add TmpID intinsert into #TreeInfo
SELECT * from [Customers]到时成功了,但由于改变了列的顺序,导致前面某个bool型的字段值都有问题了。请教如何解决,谢谢了
if object_id('Tempdb..#TreeInfo') is not null
drop table #TreeInfoSELECT * INTO #TreeInfo
FROM ( SELECT * from Customers where 1<>1 )AS treeinfo这样创建了一个临时表在Customers表中有一个tmpID是自增列,非主键然后执行
insert into #TreeInfo
SELECT * from [Customers]
提示
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'#TreeInfo'中的标识列指定显式值。
然后执行
SET IDENTITY_INSERT #TreeInfo ON
insert into #TreeInfo
SELECT * from [Customers]依旧提示
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'#TreeInfo'中的标识列指定显式值。然后执行alter table #TreeInfo drop column TmpID
alter table #TreeInfo add TmpID intinsert into #TreeInfo
SELECT * from [Customers]到时成功了,但由于改变了列的顺序,导致前面某个bool型的字段值都有问题了。请教如何解决,谢谢了
执行了
alter table #TreeInfo alter column TmpID int
insert into #TreeInfo
SELECT * from [Customers]依旧提示
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'#TreeInfo'中的标识列指定显式值。
SELECT * from [Customers] --应该能成功了哦。奇怪...
单执行
SET IDENTITY_INSERT #TreeInfo ON
成功再执行
insert into #TreeInfo
SELECT * from [Customers]
提示
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'#TreeInfo'中的标识列指定显式值。3句连起来执行,还一样出错,郁闷了
然后执行
alter table #TreeInfo drop column TmpID
alter table #TreeInfo add TmpID int
反正也是最后一列,不影响前面列的顺序
然后
insert into #TreeInfo
SELECT * from [Customers]
就可以了~~呵呵,暂时这么这凑合用了
SET IDENTITY_INSERT #TreeInfo ON --打开标识值插入
insert into #TreeInfo(TmpID,col1,col2.....) --所有列名列表
SELECT * from [Customers]
SET IDENTITY_INSERT #TreeInfo OFF --关闭标识值插入--表TmpID的值与[Customers]表可能不同insert into #TreeInfo(col1,col2.....) --除了自增列TmpID外的所有列名列表
SELECT * from [Customers]
reconfigure with override
go
update syscolumns set colstat=0 where colstat=1 and id=object_id('tablename')
go
sp_configure 'allow update',0
reconfigure with override
http://topic.csdn.net/u/20100325/14/1dd919bc-194b-42d8-9673-f0efc8796755.html
if object_id('Tempdb..#TreeInfo') is not null
drop table #TreeInfoSELECT 1 col1,* INTO #TreeInfo --临时表最前面增加一个int 列,如果此列与TmpID类型相同。
FROM ( SELECT * from Customers where 1<>1 )AS treeinfo
GO
alter table #TreeInfo drop column TmpID --删除自增列
--如果可以更改临时表列名成的话把col1改为TmpID ,不改也无所谓,但后面引用的时候要注意。
GO
insert into #TreeInfo
SELECT * from [Customers]
GO