如题,奇怪的是.
在查询分析器里select * into newTable from OldTable后,然后插入newTable是没问题的.插入newTable还是有问题.
以为没问题了,但是过后又出现这样的问题,然后再重新select * into下又可以插入了,莫名其妙.
请问这是为什么呢???
在查询分析器里select * into newTable from OldTable后,然后插入newTable是没问题的.插入newTable还是有问题.
以为没问题了,但是过后又出现这样的问题,然后再重新select * into下又可以插入了,莫名其妙.
请问这是为什么呢???
解决方案 »
- 急需Sql语句一条
- 问几个基础的问题
- Asp制作一个题库,并且可以随机抽题产生一张试卷(共计10填空,4简答),在线等答案
- linkbutton postbackurl的用法
- 关于数据量大的问题
- 当按下ctrl+c时,从datagrid 复制数据到excel(是Winform窗体),请高人指点~~!顶者有分
- 100分求代码大神们帮忙!!!
- OleDbParameter传值问题还未解决!!!
- 还是TREEVIEW的问题,我重新安装了一遍,是自动安装,可是显示此控件还是不对,急死了~~~~~
- 请都高手,上传文件的问题?本地上传没问题,而在另一台电脑上传就出现了下面的问题.
- “/”应用程序中的服务器错误。
- 文章列表的问题.
在查询分析器里select * into newTable from oldTable后,然后插入newTable是没问题的.插入oldTable还是有问题.
但是过后又出现这样的问题,然后再重新select * into下又可以插入了,莫名其妙.
请问这是为什么呢???
表结构当然是一样的.
to Mskycn:
表里有没有子增列问题依旧.
drop table [dbo].[oldTable]
GOCREATE TABLE [dbo].[oldTable] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[Mobile_Consumer_ID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_ID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Mobile_Type] [int] NOT NULL ,
[Mobile_Sim] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_SN] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_AddTag] [bit] NULL ,
[Mobile_EditTag] [bit] NULL ,
[CanWebQuery] [bit] NULL ,
[CreateDate] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Attribute] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[UpStr] [varchar] (1000) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_VehicleRegistration] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[newTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[newTable]
GOCREATE TABLE [dbo].[newTable] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[Mobile_Consumer_ID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_ID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Mobile_Type] [int] NOT NULL ,
[Mobile_Sim] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_SN] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_AddTag] [bit] NULL ,
[Mobile_EditTag] [bit] NULL ,
[CanWebQuery] [bit] NULL ,
[CreateDate] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Attribute] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[UpStr] [varchar] (1000) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_VehicleRegistration] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO这个是表结构,既然是select * into
那么new and old都是一样。执行的sql如下:
insert into newTable -- or oldTable
(Mobile_Consumer_ID,Mobile_ID,Mobile_Type,Mobile_Sim,Mobile_SN,Mobile_AddTag,Mobile_EditTag,CanWebQuery,CreateDate,Attribute,UpStr,Mobile_VehicleRegistration)
values('20','214',101,'131','SN111111113',0,1,1,'2007-11-17','广州新蓝德','2007-11-17 11:39:18添加本车辆','粤A88888')
这句功能就是导表,不会有问题,因为楼主说了表结构完全相同!如果说接下来插入oldTable有问题,那问题肯定出在insert语句上,
尽管没看到sql语句,不过十有八九楼主是用字符串拼接滴sql语句,
如果是存储过程或用参数形式执行sql肯定没问题。
问题很可能出在插入的值上面,例如:插入值中带有单引号,导致
插入语句异常(与异常信息提示一致)!
只建oldTable 用 select * into newTable from oldTable创建newTable并插入数据也没有问题
又看了一遍你的问题,但是还是不明白你想要问什么,你是怎么插入的?
蓝色妖姬呵呵,真认真,楼主写滴都是正确滴!错就错在执行滴sql语句上(楼主就是没分析这点),
原因上面已经分析了,因为俺也犯过这种错误,哈
但是执行语句我是放在查询分析器里执行的,一样有问题。
执行select * into后插入newTable可以,但插入oldTable还是不行,这应该可以说明我的插入语句没有错误。
至于为什么过段时间newTable又不能插入了。反复select * into才能插入到新表(没有一次可以插入旧表的)
这个才是我百思不得其解的问题。
在查询分析器里执行下句,ERROR:插入错误: 列名或所提供值的数目与表定义不匹配。
insert into AAA --AAA or BBB or CCC
(Mobile_Consumer_ID,Mobile_ID,Mobile_Type,Mobile_Sim,Mobile_SN,Mobile_AddTag,Mobile_EditTag,CanWebQuery,CreateDate,Attribute,UpStr,Mobile_VehicleRegistration)
values('20','214',101,'131','SN111111113',0,1,1,'2007-11-17','广州新蓝德','2007-11-17 11:39:18添加本车辆','qwe4213')然后
select * into BBB from AAA 执行以上语句插入BBB:OK。没问题!
............................假设过1个小时后.................................
执行以上语句插入BBB: ERROR:插入错误: 列名或所提供值的数目与表定义不匹配。然后
select * into CCC from BBB 执行以上语句插入CCC:OK。没问题!
............................假设过1个小时后.................................
执行以上语句插入CCC: ERROR:插入错误: 列名或所提供值的数目与表定义不匹配。
...DDD...
...EEE...
...FFF...
.........
.........不知清楚否?????
SELECT INTO 语句创建一个新表,并用 SELECT 的结果集填充该表。新表的结构由选择列表中表达式的特性定义,例如:SELECT Shippers.*, Link.Address, Link.City,
Link.Region, Link.PostalCode
INTO NewShippers
FROM Shippers
JOIN LinkServer.DB.dbo.Shippers AS Link
ON (Shippers.ShipperID = Link.ShipperID)SELECT INTO 可将几个表或视图中的数据组合成一个表。也可用于创建一个包含选自链接服务器的数据的新表。
以上摘自 SQL Server 联机丛书!楼主说“反复select * into才能插入到新表”?!这是干嘛呀,如果newTable已存在,
是不能再次执行 select * into newTable from oldTable 的!!!根据楼主滴描述,俺怀疑oldTable上存在未提交滴事务,不过sql异常信息提示又不太像,哈
但是都是刚开始可以插入,过后就不能插入了.
[id] [int] IDENTITY (1, 1) NOT NULL ,
[Mobile_Consumer_ID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_ID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Mobile_Type] [int] NOT NULL ,
[Mobile_Sim] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_SN] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_AddTag] [bit] NULL ,
[Mobile_EditTag] [bit] NULL ,
[CanWebQuery] [bit] NULL ,
[CreateDate] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Attribute] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[UpStr] [varchar] (1000) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile_VehicleRegistration] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GOinsert into AAA
(Mobile_Consumer_ID,Mobile_ID,Mobile_Type,Mobile_Sim,Mobile_SN,Mobile_AddTag,Mobile_EditTag,CanWebQuery,CreateDate,Attribute,UpStr,Mobile_VehicleRegistration)
values( '20', '214', 101, '131', 'SN111111113',0,1,1, '2007-11-17', '广州新蓝德', '2007-11-17 11:39:18添加本车辆', 'qwe4213')
-- (所影响的行数为 1 行)select * into BBB from AAA
-- (所影响的行数为 1 行)insert into BBB
(Mobile_Consumer_ID,Mobile_ID,Mobile_Type,Mobile_Sim,Mobile_SN,Mobile_AddTag,Mobile_EditTag,CanWebQuery,CreateDate,Attribute,UpStr,Mobile_VehicleRegistration)
values( '20', '214', 101, '131', 'SN111111113',0,1,1, '2007-11-17', '广州新蓝德', '2007-11-17 11:39:18添加本车辆', 'qwe4213')
-- (所影响的行数为 1 行)select * into CCC from BBB
-- (所影响的行数为 2 行)insert into CCC
(Mobile_Consumer_ID,Mobile_ID,Mobile_Type,Mobile_Sim,Mobile_SN,Mobile_AddTag,Mobile_EditTag,CanWebQuery,CreateDate,Attribute,UpStr,Mobile_VehicleRegistration)
values( '20', '214', 101, '131', 'SN111111113',0,1,1, '2007-11-17', '广州新蓝德', '2007-11-17 11:39:18添加本车辆', 'qwe4213')
-- (所影响的行数为 1 行)
-- CCC 里面三条数据除了 id 不一样其他字段完全相同!楼主说............................假设过1个小时后.................................
执行以上语句插入BBB:ERROR:插入错误:列名或所提供值的数目与表定义不匹配。首先与时间无关,不过与执行的语句有关,如果还是这句
insert into AAA -- or BBB or CCC
(Mobile_Consumer_ID,Mobile_ID,Mobile_Type,Mobile_Sim,Mobile_SN,Mobile_AddTag,Mobile_EditTag,CanWebQuery,CreateDate,Attribute,UpStr,Mobile_VehicleRegistration)
values( '20', '214', 101, '131', 'SN111111113',0,1,1, '2007-11-17', '广州新蓝德', '2007-11-17 11:39:18添加本车辆', 'qwe4213')
肯定不报错!否则,请重新安装 SQL Server!楼主请仔细检查insert语句吧!