Diego,
ho difficolta' a comprendere la cosa, cosi' "a spizzichi e bocconi"... ma sicuramente e' un problema mio...
al di la' di cio', e comunque considerando che un'operazione ETL (extract + transform + load) difficilmente si traduce in una pura operazione bulk insert, vorrei pensare che la mia precedente risposta, brutale e interamente basata su un processo SQL, possa essere affinata passando da un ambito procedurale e di struttura ad un ambito piu' architetturale...
voglio pensare che ci sia un'applicazione, un servizio, che periodicamente faccia l'operazione di lettura da Tbl_rettlotti_08_09 per fare il necessario clean up e preparazione all'insert in MG7G_PROGQTAVARIREF ...
questo modulo si puo' quindi occupare di SELECT da Tbl_rettlotti_08_09 ... caricare MG7G_PROGQTAVARIREF, ottenere in output il valore di MG7G_ID_MG7I, ed aggiornare con tale valore Tbl_rettlotti_08_09 ...
questo dovrebbe essere "il modus" da perseguire...
una modalita' piu' architetturale basata su business logic...
SE invece fai effettivamente come prima ho "in semplicita'" indicato,
INSERT INTO MG7G_PROGQTAVARIREF
SELECT x, y, z, CASE WHEN k > 1 THEN m * k ELSE m + k END, altra "logica", "altre colonne"
FROM Tbl_rettlotti_08_09
WHERE MG7G_ID_MG7I IS NULL;
allora effettivamente dovrai occuparti di un trigger che riesca a referenziare le righe di Tbl_rettlotti_08_09 con la relativa primary key o anche una alternative candidate key naturale (visto che in MG7G_PROGQTAVARIREF dici che hai tutti gli attributi di Tbl_rettlotti_08_09) ... e' un giochino un po' sporco... ma si fa anche questo...
mi e' tutto ancora un po' confuso... ma sicuramente e' un mio limite...
comunque, salutoni romagnoli
--
Andrea