2009-05-17 5 views
6

J'essaie d'insérer une ligne dans une table, en utilisant une valeur dérivée d'une autre table. Voici l'instruction SQL que je suis en train d'utiliser:Insertion d'une ligne dans DB2 à partir d'une sous-sélection - Erreur NULL

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

Donc, je suis en train de créer une ligne de NextKeyValue qui a « KeyName » de « DisplayWorkItemId » et « KeyValue » d'un plus de la valeur maximale au work_item.work_item_display_id.

L'instruction SELECT de la requête ci-dessus renvoie le résultat attendu lorsque je l'exécute de façon autonome.

Toute requête SQL me donne l'erreur suivante, cependant:

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

Qu'est-ce que cela signifie, et ce qui ne va pas avec ma requête?

+0

+1 Je vous suggère de changer le titre de la question en quelque chose comme "Insérer une ligne de sous-sélection - Erreur NULL", et ajouter une balise "SQL", car ce problème est générique et non spécifique à DB2. –

+0

bonne idée. Je viens de le faire. – pkaeding

Répondre

15

L'explication la plus probable est que vous avez des colonnes supplémentaires dans la table NextKeyValue qui ne peuvent pas accepter les valeurs NULL, et cette instruction INSERT "essaye" d'y insérer NULL.

Est-ce le cas par hasard?

+0

Ouais, c'était ça. Il y avait un tas d'autres colonnes dans cette table qui n'étaient pas nulles que j'ai oublié. Merci! – pkaeding

Questions connexes