Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无法将值NULL插入到列中_Sql_Null_Sql Update - Fatal编程技术网

Sql 无法将值NULL插入到列中

Sql 无法将值NULL插入到列中,sql,null,sql-update,Sql,Null,Sql Update,我有一些问题。我正在尝试获取一个要更新的表,但是它没有更新,因为其中一个字段包含空值的行 以下是没有错误的原始查询: sql="UPDATE empPac SET quantityLimit = allocation, allocationStart = '"&allocationStart&"', nextUpdate = DATEADD(mm, allocationMonths, "&allocationStart&"), lastUpdate

我有一些问题。我正在尝试获取一个要更新的表,但是它没有更新,因为其中一个字段包含空值的行

以下是没有错误的原始查询:

        sql="UPDATE empPac SET quantityLimit = allocation, allocationStart = '"&allocationStart&"', nextUpdate = DATEADD(mm, allocationMonths, "&allocationStart&"), lastUpdate = GETDATE(), quantityIssued = 0, quantityShipped = 0 WHERE allocationMonths <> 0 AND nextUpdate <= DATEADD(mm, "&checkCondition&", GETDATE()) and empIdent in (select empIdent from employee where custIdent='"&custIdent&"')"

sql=“UPDATE empPac SET quantityLimit=allocation,allocationStart=”&allocationStart&“,nextUpdate=DATEADD(mm,allocationMonths,&allocationStart&)”,lastUpdate=GETDATE(),QuantityIssuited=0,quantityShipped=0,其中allocationMonths 0和nextUpdate这与nextUpdate列为NULL无关,这与empPac表中的分配列为NULL有关。处理分配列为NULL(或修复数据)将正常工作

编辑:我唯一能保证的是错误会消失:

sql="UPDATE empPac SET quantityLimit = allocation, allocationStart = '"&allocationStart&"', nextUpdate = DATEADD(mm, allocationMonths, "&allocationStart&"), lastUpdate = GETDATE(), quantityIssued = 0, quantityShipped = 0 WHERE allocationMonths <> 0 AND (nextUpdate <= DATEADD(mm, "&checkCondition&", GETDATE()) OR nextUpdate IS NULL) and empIdent in (select empIdent from employee where custIdent='"&custIdent&"') AND allocation IS NOT NULL"

sql=“UPDATE empPac SET quantityLimit=allocation,allocationStart=”&allocationStart&“,nextUpdate=DATEADD(mm,allocationMonths,&allocationStart&)”,lastUpdate=GETDATE(),quantityIssued=0,quantityShipped=0,其中allocationMonths 0和(nextUpdate这与nextUpdate列为NULL无关,这与empPac表中的分配列为NULL有关。处理分配列为NULL(或修复数据)将正常工作

编辑:我唯一能保证的是错误会消失:

sql="UPDATE empPac SET quantityLimit = allocation, allocationStart = '"&allocationStart&"', nextUpdate = DATEADD(mm, allocationMonths, "&allocationStart&"), lastUpdate = GETDATE(), quantityIssued = 0, quantityShipped = 0 WHERE allocationMonths <> 0 AND (nextUpdate <= DATEADD(mm, "&checkCondition&", GETDATE()) OR nextUpdate IS NULL) and empIdent in (select empIdent from employee where custIdent='"&custIdent&"') AND allocation IS NOT NULL"

sql=“UPDATE empPac SET quantityLimit=allocation,allocationStart=”&allocationStart&“,nextUpdate=DATEADD(mm,allocationMonths,&allocationStart&)”,lastUpdate=GETDATE(),quantityIssued=0,quantityShipped=0,其中allocationMonths 0和(nextUpdate问题不在于列
nextUpdate
;根据错误消息,问题在于试图将
NULL
分配到列
quantityLimit
。查看您的代码,您正在将
quantityLimit
设置为等于值
allocation
,我假定该值是您的另一列。)数据库-确保列或输入不为null。

问题不在于列
nextUpdate
;根据错误消息,问题在于试图将
null
分配到列
quantityLimit
。查看代码,您正在将
quantityLimit
设置为等于值
分配
,我假定它是数据库中的另一列-确保列或输入不为空。

或nextUpdate为空添加到
中,其中
子句拓宽了搜索条件,即可以找到更多行


显然,这些附加行中的一行在
分配
字段中有一个空值(然后将其分配给
数量限制
,根据错误消息,该字段不是空值).

或nextUpdate添加到您的
WHERE
子句中会拓宽搜索条件,即可以找到更多行


显然,这些附加行中的一行在
分配
字段中有一个空值(然后将其分配给
quantityLimit
,根据错误消息,该字段不为空)。

如果您试图编辑一个表列以使其不为空,则这只是一个观察值。您可能会得到一个错误消息:

“无法将值null插入列更新失败”

即使您得到了正确的UPDATESQL语句

ALTER TABLE
[dbo].[Table name] 
ALTER COLUMN
  [Column Name]
    NVARCHAR(250) NOT NULL;
解决方案:非常简单

  • 在同一列的空行上插入一些值
  • 现在尝试执行update语句。 希望这能节省一些时间,并能有所帮助

  • Vinu-Nair

    如果您试图编辑一个表列使其不为空(以前为空),则这只是一个观察。您可能会得到一个错误,说明:

    “无法将值null插入列更新失败”

    即使您得到了正确的UPDATESQL语句

    ALTER TABLE
    [dbo].[Table name] 
    ALTER COLUMN
      [Column Name]
        NVARCHAR(250) NOT NULL;
    
    解决方案:非常简单

  • 在同一列的空行上插入一些值
  • 现在尝试执行update语句。 希望这能节省一些时间,并能有所帮助

  • Vinu Nair

    你应该真正地参数化你的查询你应该真正地参数化你的查询第一个查询工作正常。问题发生在我添加到WHERE时…请看我的OP中的第一个查询,没有错误…我在OP中发布的第二个查询没有错误。这就是我丢失的原因。第一个查询工作正常。问题是当我添加到WHERE时出现m…请参阅我的OP中的第一个查询,它没有给出错误…但我在OP中发布的第二个查询却出现了错误。这就是我丢失的原因。因此,您的empPac表中没有分配为NULL的行?如果是,则WHERE子句会导致选择分配为NULL的行进行更新。再次,请找出是什么原因re分配列为NULL(通过将更新作为SELECT运行,并添加一些列以帮助标识行)并处理该参数或修复数据。编辑:请参阅我的修复。它不能保证quantityLimit会正确更新,但会阻止错误。因此,您的empPac表中没有分配为空的行?如果是,则where子句会导致选择分配为空的行进行更新。再次,请找出分配为空的行的位置e分配列为NULL(通过将更新作为SELECT运行,并添加一些列以帮助识别行),并处理该参数或修复数据。编辑:请参阅我的修复。这不能保证quantityLimit会正确更新,但会停止错误。太棒了,我添加了“WHERE allocation is NOT NULL”,它现在可以工作了:)谢谢大家,allawesome,我添加了“WHERE allocation NOT NULL”,它现在可以工作了:)谢谢大家