错误 515
严重级别 16
消息正文
无法将 NULL 值插入列 ''%1!''、表 ''%3!'';该列不允许空值。%ls 失败。解释
当在运行时试图使用空值插入或更新不允许空值的列时,发生该错误。该消息与以下消息不同,以下消息表示在编译时检测到该试图。错误号 233:表 ''%3!'' 中的列 ''%1!'' 不能为空。如果将作为存储过程或触发器中的 INSERT 或 UPDATE 语句的目标的表除去并重新创建,并且一个或多个表列定义已由 NULL 更改为 NOT NULL,则也可以发生该错误。对策
如果当正在运行 UPDATE 或 INSERT 语句时发生该错误,则验证插入或更新的数据是否与受影响表的列定义相匹配。插入或更新列不允许空值。说明 在通过值的直接 UPDATE 或 INSERT 中,将获得编译错误 233 而不是错误 515。通常 515 错误号发生在使用另一个表中的数据的 INSERT/SELECT 或 UPDATE 语句中。
如果当存储过程或触发器引用已除去并重新创建的表(该表的为空性已不同)时发生该错误,则除去并重新创建受影响的存储过程或触发器。
严重级别 16
消息正文
无法将 NULL 值插入列 ''%1!''、表 ''%3!'';该列不允许空值。%ls 失败。解释
当在运行时试图使用空值插入或更新不允许空值的列时,发生该错误。该消息与以下消息不同,以下消息表示在编译时检测到该试图。错误号 233:表 ''%3!'' 中的列 ''%1!'' 不能为空。如果将作为存储过程或触发器中的 INSERT 或 UPDATE 语句的目标的表除去并重新创建,并且一个或多个表列定义已由 NULL 更改为 NOT NULL,则也可以发生该错误。对策
如果当正在运行 UPDATE 或 INSERT 语句时发生该错误,则验证插入或更新的数据是否与受影响表的列定义相匹配。插入或更新列不允许空值。说明 在通过值的直接 UPDATE 或 INSERT 中,将获得编译错误 233 而不是错误 515。通常 515 错误号发生在使用另一个表中的数据的 INSERT/SELECT 或 UPDATE 语句中。
如果当存储过程或触发器引用已除去并重新创建的表(该表的为空性已不同)时发生该错误,则除去并重新创建受影响的存储过程或触发器。
where ... and not (prd.need_days is null)
where ... and not (prd.need_days is null)
where ... and not (prd.need_days is null)
--楼主是要更新吧?
update prdt set need_days=b.need_days
from prdt a join prd b on a.prd_no=b.prd_no collate chinese_prc_ci_as
where b.prd_no is not null
insert into prdt(need_days)
select need_days from prd
where prd_no collate chinese_prc_ci_as is not null
insert into prdt(need_days,prd_no)
select need_days,prd_no from prd
where prd_no collate chinese_prc_ci_as is not null
解决方法:两个都允许为空!或确定第一个表need_days字段中没有空值!