INSERT INTO DDA_MatchStrings
(Unit, FamilyID, AccountNumber, MatchType, MatchString, SnapshotDate, IgnoreRecord, Merged)
SELECT
Unit, FamilyID, AccountNumber, 'EMAIL', MatchString, @SnapshotDate, 0, 0
FROM DDA_MatchStrings_temp AS tms
WHERE tms.MatchString IN
(SELECT tms.MatchString FROM DDA_MatchStrings_temp AS tms
GROUP BY tms.MatchString
HAVING COUNT(DISTINCT unit) > 1)
ORDER BY tms.MatchString
Я добавил отступы в полевые ссылки для визуального наблюдения.Почему я получаю «Не могу вставить значение NULL в ошибки столбца« X », на жестко закодированное значение?
Это утверждение в хранимой процедуре, но когда SP попадает в этот момент, он дает следующее сообщение об ошибке:
Cannot insert the value NULL into column 'IgnoreRecord', table 'Db.dbo.TableX'; column does not allow nulls. INSERT fails.
Я знаю, что значит эта ошибка. Я не новичок в T-SQL. Тем не менее, я полностью озадачен тем, почему он дает мне эту ошибку? Значение не равно нулю. Это жесткий код 0
. FYI, поле, о котором идет речь, является tinyint
. Он должен принять это значение. Кроме того, это утверждение также в других хранимых процедур (только с другим значением в поле MatchType
.
Что может вызвать эту ошибку?
UPDATE
Я решил ответить на мой собственный вопрос, а не удалять его. Это хороший случай, когда не обращать внимания на схемы db, вызвало проблемы. Стоит обновить в качестве ссылки, что вы всегда должны уделять внимание определениям объектов SQL и какие схемы предоставляются при выполнении кода. ненавижу быть тем, кто ошибается, но, надеюсь, другие узнают из моей ошибки.
Мое предположение заключается в том, что оператор select возвращает нулевые записи (т. Е. Все значения null), и этот столбец является единственным, что волнует. Даже если у вас есть жестко закодированное значение '0', строки (-ы) будут либо существовать, либо не существовать на основе вашего предложения where. –
В таблице также может быть триггер, который изменит значение 0 на нуль? – SomeJavaGuy
FYI, создайте эту таблицу. Триггеров нет. Поданная информация определяется как «[IgnoreRecord] [tinyint] NOT NULL'. – RLH