2009-05-17 7 views
6

Ich versuche, eine Zeile in eine Tabelle einzufügen, die einen Wert verwendet, der von einer anderen Tabelle abgeleitet ist. Hier ist die SQL-Anweisung, die ich zu verwenden Ich versuche:Einfügen einer Zeile in DB2 aus einer Unterauswahl - NULL-Fehler

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

Also, ich versuche, eine Reihe in NextKeyValue zu schaffen, die ‚KeyName‘ von ‚DisplayWorkItemId‘ und ‚KeyValue‘ von einer mehr als der Maximalwert hat in work_item.work_item_display_id.

Die SELECT-Anweisung in der obigen Abfrage gibt das erwartete Ergebnis zurück, wenn ich es selbst ausführe.

Die ganze SQL-Abfrage wird mir die folgende Fehlermeldung zu geben, aber:

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

Was bedeutet das, und was mit meiner Abfrage ist falsch?

+0

+1 Ich schlage vor, Sie ändern den Titel der Frage in etwas wie "Einfügen einer Zeile aus Unterauswahl - NULL Fehler" und fügen "SQL" -Tag hinzu, da dieses Problem generisch und nicht DB2-spezifisch ist. –

+0

gute Idee. Ich habe es gerade getan. – pkaeding

Antwort

15

Die wahrscheinlichste Erklärung ist, dass Sie zusätzliche Spalten in der NextKeyValue-Tabelle haben, die keine NULL-Werte akzeptieren können, und diese INSERT-Anweisung versucht, NULL in sie zu setzen.

Ist das zufällig der Fall?

+0

Yup, das war es. Es gab eine Reihe anderer Spalten in dieser Tabelle, die nicht nullbar waren, die ich vergessen hatte. Vielen Dank! – pkaeding

Verwandte Themen