Dudas sobre una consulta para script.

Estimados amigos, pocas veces molesto en este rubro, pero quisiera que me digan si lo que intento hacer no lo soporta el postgres o estoy haciendo algo mal.

Sabemos que una de las formas del comando INSERT es la siguiente:

INSERT INTO tabla_1 SELECT dato1,dato2… FROM tabla_2 WHERE condición

Este comando, funciona.
Lo que yo intento, y me da error es lo siguiente:

INSERT INTO tabla_1 UPDATE tabla_2 set dato99 = valor WHERE condición RETURNING dato1,dato2

Esto es porque quiero insertar en la tabla_1 solo los registros de la tabla_2 que son modificados cuando cumplen una determinada condición una condición.

Quiero evitar hacerlo en dos consultas separadas dado que, entre una consulta y otra, puede haber cambios en la tabla_2

Posiblemente no soporte la combinación de insert y update, pero el manual dice que el returning es igual a hacer un select.

Un cordial saludo, y gracias por adelantado.

Hola Claudio,

la verdad me quedo corto de conocimiento como para decirte si funciona o no, voy a buscar un poco, esto se trata de un proceso masivo?.

Quizas una forma mas sencilla podria ser utilizando una funcion que haga el insert en tabla_1 y programar la misma mediante un trigger on update en tabla_2, la condicion particular la podrias chequear dentro de la misma funcion y asi determinar si haces el insert o no, es un poco mas sencillo y engorroso a la vez.

Igual eso funciona si la condicion no es variable digamos.

Saludos

Hola Richard, gracias por tu atención.
En realidad lo resolví usando una tabla temporal que uso como lista para ver que registros proceso. La consulta que planteo es porque me parece más simple y elegante de aplicar.
Pero bueno, el programador propone y los dioses de la informática disponen.
Un cordial saludo.