Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Actualizar un campo de todas las tablas de una BD?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Actualizar un campo de todas las tablas de una BD? Responder citando

Hola amigos, deseo actualizar un campo que se llama fecha para que ponga la fecha del dia automaticamente. Esto se hace asi:

Código:
"UPDATE valenciachina set fecha=sysdate()";


Mi problemas es que no se hacerlo para que actualicen todas las las tablas de la BD a la vez, y no tener que hacerlo una por una.

Mi SGBD es MYSQL. Muchas gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola,

Desconozco si MySQL tiene implementado una funcionalidad para actualizar todas las tablas, pero si tuviera que implementarlo lo haría en un store procedure, obteniendo el resultado de sysdate(), lo almaceno en una variable y actualizo el dato tabla por tabla de la base de datos.

Además, podrías buscar si en MySQL se tiene una sentencia que te devuelva todas las tablas de la base de datos y creas query's dinámicas que te actualicen las tablas.

A lo que me refiero es a lo siguiente, en un lenguaje XXX de Base de datos:


[code]

create procedure ActualizaHoraTablas()
var fecha_sistema as fecha_hora;
begin

fecha_sistema = GetDateTime();

for (
select tables.Name from this.BD
where tables.Active = true
into :Nombre_Tabla; )

begin

update :Nombre_Tabla
set fecha = fecha_sistema;
end

end for.

end

[/code]

Saludos !!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Lo que yo haria es meter todos los nombres de las tablas en un archivo de texto:
Código:

DeleteFile("c:\\tablas.txt");

ADOConnection1->Open();

ADOCommand1->CommandText="select table_name from information_schema.tables where table_name like 'TB_%' INTO OUTFILE 'c:/tablas.txt' FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';";

ADOCommand1 ->Execute();

ADOConnection1->Close();


Despues recorreria el archivo de texto con un bucle y meteria el nombre de la tabla en una Variable, y haria esto para cada nombre de tabla
hasta que se termine el archivo de texto
Código:


"UPDATE" +NOMBREdeTABLA +"set fecha=sysdate()";


Prueba a ver.
Un saludo
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola hetorsc, lo que te voy a explicar es valido para la version 4.1 o superior de MySQL, para versiones inferiores debes consultar el manual de referencia.
Lo q puedes hacer es, cuando creas las tablas el campo de fecha lo creas asi.
Código:
  `my_fecha` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

entonses se acctualiza la fecha automaticamente cuando se inserta un valor
o
Código:
  `my_fecha` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

entonses se auto inicializa y actualiza automaticamente cada ves que realices un update sobre esa tupla, tambien puedes usar de esta forma
Código:
  `my_fecha` TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
cuando creas la tupla insertas un valor luego en los update se actualiza automaticamente.
si las tablas ya estan creadas puedes usar
Código:
ALTER .....

_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.