Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-10-2008
CLUSTERBIT CLUSTERBIT is offline
Miembro
 
Registrado: oct 2008
Posts: 14
Poder: 0
CLUSTERBIT Va por buen camino
Unhappy enviar registros de una tabla a un campo de otra tabla a travez de ciclo IF en MYSQL

hola les agradeseria si me ayudaran con esto

tengo que extraer los campos de una tabla o registros de una tabla
esto lo quiero hacer a traves de un ciclo if en mysql cosa que tome los registros y se copien en el campo de otra tabla

supongamos que tenenmos

tabla: personas y sus campos son:

rut,nombre,apellido_paterno,apellido_materno etc...


tabla: auditoria y sus campos son:

tabla,campo,valor_anterior,valor_actual etc...

en la tabla auditoria y dentro de sus campos necesito que se copien los registros ingresados en la tabla personas

he tratado con varias formas pero nada me resulta asumo que es con un IF pero nose como situarlo en la consulta
quizas ustedes me podrian dar una mano si es que es posible
Responder Con Cita
  #2  
Antiguo 22-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola CLUSTERBIT,
La verdad es que no comprendo que tiene que ver el IF en todo esto. No se si estoy interpretando erroneamente tu duda, pero creo que bastaría con ejecutar una cosulta SQL como de este tipo:

Código SQL [-]
INSERT INTO tu_tabla
SELECT tus_campos FROM tu_otra_tabla

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 22-10-2008
CLUSTERBIT CLUSTERBIT is offline
Miembro
 
Registrado: oct 2008
Posts: 14
Poder: 0
CLUSTERBIT Va por buen camino
Smile

Cita:
Empezado por Delphius Ver Mensaje
Hola CLUSTERBIT,
La verdad es que no comprendo que tiene que ver el IF en todo esto. No se si estoy interpretando erroneamente tu duda, pero creo que bastaría con ejecutar una cosulta SQL como de este tipo:

Código SQL [-]INSERT INTO tu_tabla SELECT tus_campos FROM tu_otra_tabla


Saludos,

hola Delphius gracias por responder a mi solicitud
pero es algo puntual lo que tengo que hacer lo del if solo se me ocurrio

mira supongamos que tengo la tabla td_personas con todos sus campos
y la tabla ts_auditoria con un campo de nombre audi_campo

lo que tengo que hacer es copiar los registros que se ingresen en los campos de la tabla td_personas (que no siempre se ingresaran registros en todos los campo tambien puede ser que se inserten registros en uno o dos campos de esta tabla) y que esos registro se vallan a la tabla ts_auditoria EN EL CAMPO AUDI_CAMPO espero se entienda

ahora mi otra consulta es que si pueden ir en una consulta dos INSERT y si se puede me podrias dar un ej porfavor

espero no molestar y gracias por tu interes

saludos
Responder Con Cita
  #4  
Antiguo 22-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por CLUSTERBIT Ver Mensaje
hola Delphius gracias por responder a mi solicitud
pero es algo puntual lo que tengo que hacer lo del if solo se me ocurrio

mira supongamos que tengo la tabla td_personas con todos sus campos
y la tabla ts_auditoria con un campo de nombre audi_campo

lo que tengo que hacer es copiar los registros que se ingresen en los campos de la tabla td_personas (que no siempre se ingresaran registros en todos los campo tambien puede ser que se inserten registros en uno o dos campos de esta tabla) y que esos registro se vallan a la tabla ts_auditoria EN EL CAMPO AUDI_CAMPO espero se entienda

ahora mi otra consulta es que si pueden ir en una consulta dos INSERT y si se puede me podrias dar un ej porfavor

espero no molestar y gracias por tu interes

saludos
Bueno, diculpame pero no había leído con atención bien como venía la estructura de las tablas.

Ahora que leo bien, el tema del INSERT no va a funcionar. Me parece más adecuado optar por triggers, más sabiendo que se trata de llevar un proceso de auditoría.

Desconozco MySQL, no sabría decir si tiene soporte de triggers. Pero me parece que es la mejor opción. Si tiene soporte (me extrañaría si no los tuviera, sabiendo que hablan tan bien de este motor) quedaría ahora analizar cuales de los 6 posibles triggers son los que se van a emplear para llevar el proceso de auditoria:

BEFORE INSERT
AFTER INSERT
BEFORE UPDATE
AFTER UPDATE
BEFORE DELETE
AFTER DELETE

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 22-10-2008
CLUSTERBIT CLUSTERBIT is offline
Miembro
 
Registrado: oct 2008
Posts: 14
Poder: 0
CLUSTERBIT Va por buen camino
Smile

Cita:
Empezado por Delphius Ver Mensaje
Bueno, diculpame pero no había leído con atención bien como venía la estructura de las tablas.

Ahora que leo bien, el tema del INSERT no va a funcionar. Me parece más adecuado optar por triggers, más sabiendo que se trata de llevar un proceso de auditoría.

Desconozco MySQL, no sabría decir si tiene soporte de triggers. Pero me parece que es la mejor opción. Si tiene soporte (me extrañaría si no los tuviera, sabiendo que hablan tan bien de este motor) quedaría ahora analizar cuales de los 6 posibles triggers son los que se van a emplear para llevar el proceso de auditoria:

BEFORE INSERT
AFTER INSERT
BEFORE UPDATE
AFTER UPDATE
BEFORE DELETE
AFTER DELETE

Saludos,
Delphius jejej... no te preocupes quizas yo no lo explique muy bien
en cuanto a si soporta triggers mysql si los soporta

y el triggers que he tratado de hacer es este:

CREATE TRIGGER prueba AFTER INSERT ON td_persona
FOR EACH ROW
BEGIN
INSERT INTO ts_auditoria(audi_ip,audi_fecha,audi_tabla,audi_campo,audi_valor_anterior,audi_valor_actual) VALUES('196.94.87.0',(SELECT DATE_FORMAT(now(),'%Y/%m/%d')),'Persona',1,1,1);
END;

entonces necesito extraer cada registro que se haga en la tabla td_persona
y mostrarlos en (OJO) el CAMPO AUDI_CAMPO de la tabla ts_auditoria
entonces nose como se haria si con un IF o si se puede agregar otro insert en la misma consulta

espero se entienda
saludos
y espero no molestar

saludos
Responder Con Cita
  #6  
Antiguo 22-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Ummm, no veo que funcione adecuadamente ese Trigger.
Por empezar supuse que te darías cuenta que necesitas de una tabla más.

Te explico:
Según tu explicación, tu tabla Auditoria tiene los siguientes campos:
tabla
campo
valor anterior
valor actual
etc...

Esto me da la pauta de que por cada campo de interés por auditar se debe insertar un registro en dicha tabla.
Ahora bien, la pregunta aquí es ¿Y que sucede si alguien hace modificaciones a más de un campo de alguna tabla a la que se le lleve el proceso de auditoria? Mejor dicho, la pregunta sería ¿De qué manera identificamos cuales son los cambios que pertenecen a un mismo registro, a una misma acción?

Es necesario contar con un esquema maestro-detalle para conseguir esto. Por ejemplo: una tabla maestra llamada Auditoria que contenga los campos:
IDAuditoria -> PK
Fecha/Hora
Nombre_tabla
IDregistro
etc

Y una tabla Auditoria_detalle, cuyos campos serían en este caso:
IDAuditoria_detalle -> PK
AuditoriaID -> FK
campo
ValorActual
valorAnterior

¿Porqué este esquema? Porque de esta manera conseguimos identificar todos los cambios realizados para un mismo registro de alguna tabla.

De este modo, ante el disparo de algún trigger, realizamos un INSERT dentro de éste en las tabla de detalles, por cada campo que necesitamos auditar.

Tal vez este hilo te sea de ayuda para comprender mejor el panorama.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mysql: copiar los campos de una tabla de una base de datos a otra tabla de otra base? patriram MySQL 4 02-11-2007 16:00:24
Actualizar un campo de una tabla con datos que se encuentran en otra tabla Morphine SQL 4 15-12-2006 22:47:42
pasar registros de una tabla a otra... CarlosHernandez Firebird e Interbase 2 17-01-2006 15:58:23
Seleccionar registros en una tabla, envio, e insercion en otra tabla!! EfrainSanmiguel Conexión con bases de datos 3 21-10-2004 01:12:43
Registros de una tabla que no se encuentren en otra Ignacio SQL 6 31-03-2004 16:30:54


La franja horaria es GMT +2. Ahora son las 13:53:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi