| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Alexeu Lt JG

Registrado: 12 Abr 2007Mensajes: 62
|
Publicado: Jue 21 Feb, 2008 10:17 am Asunto: Actualizar un campo de todas las tablas de una BD? |
|
|
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 |
|
 |
edwinhp2 Lt JG

Registrado: 19 Nov 2005Mensajes: 67
|
Publicado: Jue 21 Feb, 2008 4:20 pm Asunto: |
|
|
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 |
|
 |
hetorsc Lt JG

Registrado: 11 Abr 2007Mensajes: 61
|
Publicado: Mie 16 Abr, 2008 12:55 pm Asunto: |
|
|
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 |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Mie 16 Abr, 2008 8:40 pm Asunto: |
|
|
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 _________________ Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr) |
|
| Volver arriba |
|
 |
|