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 simpleSELECT
après uneINSERT
(pas deUPDATE
, désolé). (en V6R1)
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ce qui suit:
Si cela ne fonctionne pas, je vous suggère de poster pertinent de CRÉER et d'INSÉRER des états, de sorte que nous pouvons exécuter un test en local.
ok de solution facile, je viens de lancer incrément d'abord, puis insérer en tant que ci-dessous: