求助:表 'tempdb.dbo.#TCustOrderM__00000000000B';列不允许有 Null 值。UPDATE 失败。

学习C#+SQL 2020-10-10 09:22:18
求助

系统MRP计算时提示下面错误信息,不知道哪里出了问题。
下面提示的数据库不是我使用的数据库名,应该是一临时的数据库。
而在临时数据库:tempdb.dbo里找不到“#TCustOrderM__00000000000B”这个内容。
不知从哪里下手,请大神帮忙看下啥问题。

错误信息如下:
-------------------------------------------------------------------------------------------------
Run SQL error:不能将值 NULL 插入列 'CID',
表 'tempdb.dbo.#TCustOrderM__00000000000B';列不允许有 Null 值。UPDATE 失败。
-------------------------------------------------------------------------------------------------
...全文
14022 9 点赞 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
学习C#+SQL 2020-12-12
找到原因了,确实是插入表里缺少所需的列。谢谢大家!!
  • 打赏
  • 举报
回复
派大奇 2020-10-16
[Id] [int] IDENTITY(1,1) NOT NULL, 已经说明了 是自增列, 所以必须是 not null 并且 这列的值 是不必插入的 ! 你缺把 结构给改了。。。 去掉了 NOT NULL 。。。。。 你应该好好检查一下 UPDATE 失败 的 update 语句
  • 打赏
  • 举报
回复
#的是局部临时表,只有当前会话可见,退出当前会话后就会自动删除掉,还是看看你CID咋没传递吧,或者把这个临时表结构改一下让可以为空
  • 打赏
  • 举报
回复
学习C#+SQL 2020-10-15
找了一天,终于在MRP存储过程里找到NOT NULL了。
--------------------------------------------------------------------------------------------------------------------------------------------
IF EXISTS (SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'[B_Schedule]') AND OBJECTPROPERTY(ID, 'IsTable') = 1)
Drop table B_Schedule
CREATE TABLE [dbo].[B_Schedule](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Code] [nvarchar](30) NULL,
[Vendor] [nvarchar](30) NULL,
[FType] [int] NULL,
[Lie0] decimal(18,2),
[StartDate] [DateTime] null default getdate()
)

Declare @i int=0
--动态生成列
while @i<@TQDays
begin
set @i=@i+1
set @sSQL = 'Alter table B_Schedule add Lie'+CAST(@i AS varchar(3))+' decimal(18,2) '
exec(@sSQL)
end
print '2'
--------------------------------------------------------------------------------------------------------------------------------------------


但把NOT 删掉后,MRP计算界面出现下面错误
但B_Schedule表里的ID列不能更改为允许空值。
----------------------------------------------------------------------------------
Run SQL error:
无法为表 'dbo.B_Schedule' 的可为 Null 的列 'Id' 创建 IDENTITY 属性
----------------------------------------------------------------------------------


  • 打赏
  • 举报
回复
threenewbee 2020-10-14
完整的sql贴出来看看,有没有用子查询或者临时表,怎么写的。
  • 打赏
  • 举报
回复
正怒月神 2020-10-14
引用 3 楼 学习C#+SQL 的回复:
[quote=引用 2 楼 正怒月神 的回复:]不能将 Null插入 CID。 这个很明显了
主要是找不到“CID”这个列, 也找不到“tempdb.dbo.#TCustOrderM__00000000000B”这个数据源。[/quote] 人家可能只是一个临时表。 具体要看你的语句。 也可能是你调用的存储过程里的sql
  • 打赏
  • 举报
回复
学习C#+SQL 2020-10-14
引用 2 楼 正怒月神 的回复:
不能将 Null插入 CID。
这个很明显了


主要是找不到“CID”这个列,
也找不到“tempdb.dbo.#TCustOrderM__00000000000B”这个数据源。
  • 打赏
  • 举报
回复
学习C#+SQL 2020-10-13
大神们抽时间帮忙看下啊。
  • 打赏
  • 举报
回复
正怒月神 2020-10-13
不能将 Null插入 CID。 这个很明显了
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2020-10-10 09:22
社区公告

让您成为最强悍的C#开发者