SQL Server奇怪问题,不能插入数据
我原来有这么个表
CREATE TABLE [BarCode_Mapping] (
[ATL_ID] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[My_ID] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[PostDate] [datetime] NULL CONSTRAINT [DF_BarCode_Mapping_PostDate] DEFAULT (getdate()),
CONSTRAINT [PK_BarCode_Mapping] PRIMARY KEY CLUSTERED
(
[ATL_ID]
) ON [PRIMARY]
) ON [PRIMARY]
GO
后来增加了两个字段(原来有数据210万条)
alter table Barcode_Mapping
add ProductDate smalldatetime,BatchID varchar(20)
可增加这两个字段之后就不能插入数据了
insert into Barcode_Mapping
(Atl_ID,My_ID,PostDate,BatchID,ProductDate)
values( '123 ', '123 ',getdate(), '123 ', '2007-1-1 ')
提示 "列名或所提供值的数目与表定义不匹配 "
明明是一样的,怎么就不能保存呢
如果在另外一个数据库新建这样的一个表,再加上后来新增的两个字段
执行上面的insert语句就可以正常保存
不知道咋回事,望高手解疑答惑,不胜感激
------解决方案--------------------插入的smalldatetime数据类型不对...
------解决方案--------------------测试通过,没有问题啊
楼主是在查询分析器里执行的插入语句吗?
------解决方案----------------------try
insert into Barcode_Mapping
(Atl_ID,My_ID,PostDate,BatchID,ProductDate)
values( '123 ', '123 ',default, '123 ', '2007-1-1 ')
------解决方案--------------------可以插入啊
------解决方案--------------------可能以前的SQL語句是這樣寫的
insert into Barcode_Mapping
values( '123 ', '123 ', getdate())
------解决方案--------------------主键约束了?
------解决方案--------------------报错信息是什么?
------解决方案--------------------insert into Barcode_Mapping
values( '123 ', '123 ', getdate())
如果你的语句这样写,然后再增加列的时候,肯定会出 "列名或所提供值的数目与表定义不匹配 "
这样的错误的
insert into Barcode_Mapping
(Atl_ID,My_ID,PostDate,BatchID,ProductDate)
values( '123 ', '123 ',default, '123 ', '2007-1-1 ')
这样写是没有问题的
就是说在表名后面要跟上列名列表
------解决方案--------------------最好事将错误提示弹出来 , 可能事原来插入的时候 只写表名 没有具体写清插入那些列 ,你现在给表增加了2列导入表列和插入的值数量不一致