错误 515
严重级别 16
消息正文
无法将 NULL 值插入列 ''%1!''、表 ''%3!'';该列不允许空值。%ls 失败。解释
当在运行时试图使用空值插入或更新不允许空值的列时,发生该错误。该消息与以下消息不同,以下消息表示在编译时检测到该试图。错误号 233:表 ''%3!'' 中的列 ''%1!'' 不能为空。如果将作为存储过程或触发器中的 INSERT 或 UPDATE 语句的目标的表除去并重新创建,并且一个或多个表列定义已由 NULL 更改为 NOT NULL,则也可以发生该错误。对策
如果当正在运行 UPDATE 或 INSERT 语句时发生该错误,则验证插入或更新的数据是否与受影响表的列定义相匹配。插入或更新列不允许空值。说明  在通过值的直接 UPDATE 或 INSERT 中,将获得编译错误 233 而不是错误 515。通常 515 错误号发生在使用另一个表中的数据的 INSERT/SELECT 或 UPDATE 语句中。
如果当存储过程或触发器引用已除去并重新创建的表(该表的为空性已不同)时发生该错误,则除去并重新创建受影响的存储过程或触发器。

解决方案 »

  1.   

    加判断条件:
    where ... and not (prd.need_days is null)
      

  2.   

    加判断条件:
    where ... and not (prd.need_days is null)
      

  3.   

    select need_days into prdt (select need_days from prd) bb [where <条件>]
      

  4.   


    where ... and not (prd.need_days is null)
      

  5.   


    --楼主是要更新吧?
    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
      

  6.   

    --如果是插入,那应该是:
    insert into prdt(need_days)
    select need_days from prd
    where prd_no collate chinese_prc_ci_as is not null
      

  7.   

    如果是插入,那应该把prd_no 也列上
    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
      

  8.   

    可能是你的两个表中的字段定义的问题!如果你的第一个表的need_days字段中有空值!而另一个表中的字段不许为空!从第一个表插入第二个表时,空值插入就会报错的!
    解决方法:两个都允许为空!或确定第一个表need_days字段中没有空值!