插入语句不为一个字段插入值

Ant*_*ony 5 sql t-sql sql-server-2008

因此,我正在为我正在开发的程序编写一些 SQL,并且遇到了一个我以前从未真正见过的奇怪问题。这是给我带来麻烦的查询:

insert into [db].[dbo].[table] (JobNum, JobSeq, OperationNumber, WorkCenter,
 ResourceGroup, Material, MaterialQuantity, MaterialCost, LbrHoursPerPiece, 
 ExtendedDescription, PreviousMaterial, UniqueID) 
values ('J000001234', 1234, 123, 'UFAN', 'FANASSY', '12345678', 
 4, 50, 1, 'DESC', '', '')
Run Code Online (Sandbox Code Playgroud)

然后我从同一张表中进行选择:

SELECT * FROM [db].[dbo].[table]
where JobNum = 'J000001234'
Run Code Online (Sandbox Code Playgroud)

这是返回的内容:

查询结果

由于某种原因,即使我将其值设置为 50,MaterialCost 字段仍显示 NULL,并且当其他所有内容都正确插入时,我无法弄清楚为什么。这是表格设计,以防万一:

桌子设计

有什么想法吗?

编辑:我想指出,虽然这是我在 .NET 代码中使用的查询,但目前我仅在 SQL Server Management Studio 中测试它。

另外,评论者要求创建查询,因此:

...
CREATE TABLE [dbo].[table](
[JobNum] [nvarchar](20) NOT NULL,
[JobSeq] [int] NOT NULL,
[OperationNumber] [int] NULL,
[WorkCenter] [nvarchar](6) NULL,
[ResourceGroup] [nvarchar](30) NULL,
[Material] [nvarchar](30) NULL,
[MaterialQuantity] [decimal](18, 8) NULL,
[MaterialCost] [decimal](18, 5) NOT NULL,
[LbrHoursPerPiece] [decimal](10, 5) NULL,
[ExtendedDescription] [nvarchar](300) NULL,
[PreviousMaterial] [nvarchar](300) NULL,
[UniqueID] [varchar](200) NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING ON
GO

ALTER TABLE [dbo].[Table] ADD  CONSTRAINT     [DF_Table_MaterialCost]  DEFAULT ((0.00)) FOR [MaterialCost]
GO
Run Code Online (Sandbox Code Playgroud)

编辑2:所以我采用了CREATE TABLE查询并用它来创建另一个表tableTEST,它与故障表相同。当在 TEST 表上执行相同的查询时,它工作得很好。我还想指出,未获取正确数据的 MaterialCost 字段是在最初创建后很晚才添加到表中的。

Ant*_*ony 2

最终我还是解决了问题,却没有找到根本原因。MaterialCost 字段是在表中已经有相当大量的数据之后才添加到表中的,因此显然存在一些奇怪的情况。

为了解决我的问题,我创建了原始表的副本,将所有数据复制到新表,然后删除原始表。这样做之后,插入语句就可以正常工作了。就像我说的,它现在可以工作了,但除了该领域是新的之外,我并没有真正了解根本原因的任何细节。