db2 insérer par sélectionner une valeur à partir de différentes tables

j'essaie de l'insérer dans 1 table où l'un des champs est la course où la nécessité d'augmenter lors de l'insertion, j'ai donc créer sql insert comme ci-dessous

 INSERT INTO ICGR1100(C_IST, NUM_RIF, C_ORO, NUM_SER, TMSP_CAR, 
                      C_AG_CAR, C_MATR_CAR, C_TP_MAG, DT_RIC, C_FORN, 
                      IMP_PREM, DT_PAGM_PREM, IMP_ACQ, DT_ACQ, IMP_VEND, 
                      DT_VEND, F_GRTS, TMSP_ULT_AGG, C_MATR_ULT_AGG) 
 VALUES('01', (SELECT MAX_NUM_RIF 
                 FROM FINAL TABLE(UPDATE ICGR1005 
                 SET MAX_NUM_RIF = CAST(CAST((CAST(MAX_NUM_RIF AS DECIMAL(16))+1)
                                   AS DECIMAL(16)) AS CHAR(16)) WHERE C_IST='01')), 
                 '005', '0000000000357209', '2011-11-23 17:00:00.000', 
                 '90109', 'Gold', '03', '20111122', '001', 17900, '20111122', 
                 1667500, '20111122', 1795395, '20111122', '0', 
                 '2011-11-23 17:00:00.000', 'Gold')

mais l'obtention d'erreur comme
DB2 SQL Error:

SQLCODE=-20165, SQLSTATE=428FL, SQLERRMC=null, DRIVER=3.50.152

Message:

An SQL data change statement within a FROM  clause is not allowed in the context in which it was specified.. `SQLCODE=-20165, SQLSTATE=428FL, DRIVER=3.50.152` 

quelqu'un peut-il me conseiller

merci d'avance

  • Quelle est la version de DB2 iSeries, LUW? Je ne crois pas que l'utilisation de données-modification de la référence (le FROM FINAL TABLE bits) est valable sur l'iSeries pour autre chose qu'une simple SELECT après une INSERT (pas de UPDATE, désolé). (en V6R1)
InformationsquelleAutor Apache | 2011-11-23