2009-05-17 2 views
6

Я пытаюсь вставить строку в таблицу, используя значение, полученное из другой таблицы. Вот SQL заявление, что я пытаюсь использовать:Вставка строки в DB2 из подвыборки - ошибка NULL

INSERT INTO NextKeyValue(KeyName, KeyValue) SELECT 'DisplayWorkItemId' AS KeyName, (MAX(work_item_display_id) + 1) AS KeyValue FROM work_item; 

Итак, я пытаюсь создать строку в NextKeyValue, который имеет «KeyName» из «DisplayWorkItemId» и «KeyValue» более один, чем максимальное значение в work_item.work_item_display_id.

Оператор SELECT в приведенном выше запросе возвращает ожидаемый результат, когда я запускаю его самостоятельно.

Весь SQL-запрос дает мне следующее сообщение об ошибке, хотя:

Error: DB2 SQL Error: SQLCODE=-407, SQLSTATE=23502, SQLERRMC=TBSPACEID=2, TABLEID=75, COLNO=2, DRIVER=3.50.152 SQLState: 23502 ErrorCode: -407

Что это значит, и что случилось с моим запросом?

+0

+1 Предлагаю вам изменить заголовок вопроса на что-то вроде «Вставка строки из подвыборки - ошибка NULL» и добавить тег «SQL», поскольку эта проблема является общей, а не специфичной для DB2. –

+0

хорошая идея. Я только что это сделал. – pkaeding

ответ

15

Наиболее вероятным объяснением является то, что в таблице NextKeyValue есть дополнительные столбцы, которые не могут принимать значения NULL, и этот оператор INSERT «пытается» поместить в них NULL.

Возможно ли это случай?

+0

Yup, вот и все. В этой таблице было множество других столбцов, которые не были обнуляемы, о чем я забыл. Благодаря! – pkaeding

+0

Этот ответ помог мне определить, какой именно столбец был виноват: https://stackoverflow.com/questions/41467531/how-to-find-table-and-column-in-db2-with-tbspaceid-tableid-specified- в-ошибок мне – JavaTec

Смежные вопросы