Oracle - URGENTE! insert desde un select

   
Vista:

URGENTE! insert desde un select

Publicado por andreafuhr (3 intervenciones) el 28/05/2008 22:56:49
Hola gente linda!
Les cuento mi problema:
Tengo 1 tablaOrigen y 1 tablaDestino
Las 2 tienen la misma estructura, solo que la tablaDestino además tiene un campo "FECHA"

Necesito insertar todos los registros de la tabla origen en la destino pero además agregar la fecha....

Como puedo resolverlo?

Intenté hacer algo así pero no funciona(no es una sentencia válida):

INSERT INTO TablaDestino
SELECT * FROM TablaOrigen, '01/01/2008'

Los campos no debo nombarlos porque desconozco los nombres de los mismos, ya que el usuario especifica quien es el origen y quien es el destino, no tengo este dato de antemano....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:URGENTE! insert desde un select

Publicado por Hector (126 intervenciones) el 29/05/2008 04:32:17
Hola.
Se me ocurren dos soluciones (no las probe, asi que por favor aplica los arreglos necesarios).

1.

Insert Into tabla_destino Select campo1, campo2, campo3, sysdate from Tabla_Origen

2.
Un truquito con la base de datos:

Create or replace Trigger Trg_Insert_Destino
Before insert of Tabla_Destino
For each row
Referencing new as new and old as old
Begin
:New.Fecha := Sysdate;
End;

Ojala y te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:URGENTE! insert desde un select

Publicado por Oracle_man (2 intervenciones) el 29/05/2008 11:24:53
Hola por la informacion que has dado, no le veo mucha logica q desconozcas los campos, ya que si tienen la misma estructura y el usuario escoge cual es la tabla origen y cual la destino, debe haber una relacion correspondiente entre ellas, por tanto siempre debes saber los campos

puedes hacer lo que dice hector en el caso 1, siempre y cuando el ultimo campo corresponda a la fecha, de no ser asi no te queda mas remedio que especificar los campos

Lo del trigger en principo no funcionaría, te saltaria una excepción del tipo de "tablas mutantes" ya que estas usando el trigger sobre la misma tabla a la cual accedes, la unica forma que no te saltaría dicha excepción sería si utilizaras un trigger deltipo for each statement y sabiendo a ciencia cierta que solo se va a insertar un solo registro (si no me falla la memoria creo que es asi), por lo que esta opcion no te servira a no ser que te crees una temporal, entonces cuando dispares el triguer que inserte en la temporal y una vez hecho esto insertar en tu tabla a partir de la tempora (la verdad que si sabes la estructura de los campo y to el rollo, esto no tiene sentido)

Una forma, un poco chusquera, es a traves de sentencias IF Y ELSIF, ir haciendo inserts dependiendo del origen, pero lo dicho deberias saber los nombres de los campos,oracle es listico pero no tanto.

Espero haberte ayudado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:URGENTE! insert desde un select

Publicado por andreafuhr (3 intervenciones) el 29/05/2008 16:28:36
Gracias por sus prontas respuestas, pero encontré la solución.
Era muy simple:

INSERT INTO TB_DESTINO
SELECT TB_ORIGEN.*, SYSDATE as VIGENCIA_DATOS FROM TB_ORIGEN

Sldos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar