Невозможно вставить значение NULL в столбец - PullRequest
0 голосов
/ 20 сентября 2011

У меня проблемы. Я пытаюсь получить таблицу для обновления, однако она не обновляется, поскольку одно из полей содержит строки со значением 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()) and empIdent in (select empIdent from employee where custIdent='"&custIdent&"')"

Теперь столбец nextUpdate может иметь значение 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&"')"

Вы можете видеть, что я добавил "ИЛИ nextUpdate IS NULL" в скобках с другим условием для nextUpdate.

Тем не менее, я получаю сообщение об ошибке "Не удается вставить значение NULL в столбец" amountLimit ", таблица" myname.dbo.EmpPac "; столбец не допускает нулевые значения. UPDATE не удается."

Это не имеет смысла для меня, поскольку при просмотре myLittleAdmin показывает мне значение NULL для некоторых строк в этом столбце таблицы.

Ответы [ 3 ]

2 голосов
/ 20 сентября 2011

Проблема не в столбце nextUpdate; согласно сообщению об ошибке, проблема заключается в попытке присвоить NULL в столбце quantityLimit. Глядя на ваш код, вы устанавливаете quantityLimit равным значению allocation, которое, как я полагаю, является еще одним столбцом в вашей базе данных - убедитесь, что столбец или входные данные не равны нулю.

2 голосов
/ 20 сентября 2011

Это не имеет никакого отношения к столбцу 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"
1 голос
/ 20 сентября 2011

Добавление OR nextUpdate IS NULL к вашему предложению WHERE расширяет критерии поиска - то есть можно найти больше строк.

По-видимому, одна из этих дополнительных строк имеет значение NULL в allocation поле (которое затем присваивается quantityLimit, которое, согласно сообщению об ошибке, НЕ равно NULL).

...