2009-05-17 6 views
6

Sto cercando di inserire una riga in una tabella, utilizzando un valore che è derivato da un altro tavolo. Ecco l'istruzione SQL che sto cercando di utilizzare:Inserimento di una riga in DB2 da un sub-select - Errore NULL

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

Quindi, sto cercando di creare una riga in NextKeyValue che si e 'NomeChiave' di 'DisplayWorkItemId' e 'KeyValue' di uno in più rispetto al valore massimo in work_item.work_item_display_id.

L'istruzione SELECT nella query precedente restituisce il risultato previsto, quando l'eseguo da solo.

Tutta la query SQL mi sta dando il seguente errore, però:

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

Cosa significa questo, e ciò che è sbagliato con la mia domanda?

+0

+1 ti suggerisco di cambiare il titolo della domanda a qualcosa come "Inserimento di una riga dal sub-select - Errore NULL", e aggiungere tag "SQL", dal momento che questo problema è generico e non DB2-specifica. –

+0

buona idea. L'ho appena fatto. – pkaeding

risposta

15

La spiegazione più probabile è che nella tabella NextKeyValue siano presenti colonne aggiuntive che non possono accettare valori NULL e questa istruzione INSERT sta "cercando" di inserire NULL in esse.

è che il caso per caso?

+0

Sì, era così. C'erano un mucchio di altre colonne a quel tavolo che non erano nullable che ho dimenticato. Grazie! – pkaeding