como reemplazo un registro en una db?

<< < (2/2)

Embusterillo de bolsillo:
Hola,

Es posible buscar algo en la DB y reemplazar el registro, sin embargo, en caso de hacer eso con un script por ejemplo, si modificas un valor importante, podrías dañar la caché, luego de eso tendrías que reconstruirla. Es por eso que muchos scripts traen herramientas/tools para bajar de sus webs que se encargan de eso.

Este script en PHP te permitirá conectarte a la base de datos y modificar un valor dentro de ella, hará todo global, mucho cuidado, haz un backup porque podrías dañar la base de datos.

http://www.whitesystem.net/assets_permanent/reemplazar.zip

Espero que pueda ser de utilidad.
Un saludo.

^Tifa^:
Aunque no he visto dicho script php, espero que no sea muy cruel o danino, el usuario que inicio el post quiere algo automatico para buscar un mismo registro repetido en una, dos, tres o mas tablas en todos sus campos.... eso hasta lo que se de la forma tan automatica como el lo quiere no es posible. Los scripts pueden ayudar (sabiendo lo que se hace) igual como un procedimiento almacenado (sabiendo tambien lo que se hace) o opcionalmente puede hacerlo en una consulta SQL como le mostre, decision personal de el cual le quede mejor.

Citar

si modificas un valor importante, podrías dañar la caché, luego de eso tendrías que reconstruirla.

Este punto no me aclaro, si hablamos de MySQL (que no sabemos bajo que motor de DB el chico esta trabajando) pero si hicieramos referencia a MySQL, y si el realmente tiene activa la cache del motor se reseteara siempre que haga un insert, update o delete.... por ende estara constantemente defragmentando la cache y eso causa sobrecarga de I/O en disco, la cache es buena tenerla activa si hacemos referencia a una datawarehouse o similar, de lo contrario para un hosting lo mejor es desabilitarla o en su lugar usar una herramienta de terceros como memcache como API en php o funciones memcached dentro de MySQL como una funcion UDF entre varios servidores para compartir la carga (funcionamiento similar a MySQL cluster). Pero eso ya es otro tema independiente al peticionado por el...

Embusterillo de bolsillo:
Los dos métodos son prácticos y el script busca y reemplaza, cumple las funciones de comando, puedes analizar los ficheros para que veas como es su funcionamiento.
Tienes razón.
Perdona no leer todo tu segundo párrafo, hablaré en pro de scripts como IPBoard que luego de una alteración severa en la base de datos necesitará un rebuild del script, con medios externos porque hasta las aplicaciones internas se "dañan", este es un ejemplo del error que daría IPBoard en caso de cambiar simplemente el nombre del sitio de manera global (replicandose post por post)

Código
/**
* Set up settings
*
* @return void
* @author MattMecham
* @access protected
*/
protected function setUpSettings()
{
$settings_cache = self::$handles['caches']->getCache('settings');
 
if ( ! is_array( $settings_cache ) OR ! count( $settings_cache ) )
{
throw new Exception( "Could not initiate the registry, the settings cache is empty or missing" );
}
 
foreach( $settings_cache as $k => $v )
{
ipsRegistry::$settings[$k] = $v;
}
 

Respuesta a TiFa en la última entrada
Hola TiFa, así cómo tu dices, "no hay que desvirtuar el tema", prefiero ceder a tener que iniciar una discución (discución no implica una pelea, sino dualismo) y tener que dar otro camino al tema, arreglemos esto en privado  >:( >:( jaja es broma ... nos vemos a la salida

Cergath, confía en que cualquiera de los métodos funcionará, tu usa el que te te quede más accesible y/o práctico.

^Tifa^:
Hola Danfe, espero no desvirtuar mucho este tema. El codigo que pegaste obtiene los valores desde la cache de MySQL??? y los cambia segun los valores encontrados dentro de la cache de MySQL?????. No entiendo mucho php , pero si este codigo trabaja en base a la cache de MySQL no indica que sea siempre efectivo.

Por ejemplo, no siempre la cache en MySQL esta activa (se puede iniciar con esta desabilitada) suponiendo que si, que esta activa mira un ejemplo de mi cache en MySQL y lo que te digo:

Código
 
mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+----------+
| Variable_name           | VALUE    |
+-------------------------+----------+
| Qcache_free_blocks      | 1        |
| Qcache_free_memory      | 16768408 |
| Qcache_hits             | 0        |
| Qcache_inserts          | 0        |
| Qcache_lowmem_prunes    | 0        |
| Qcache_not_cached       | 4        |
[b]| Qcache_queries_in_cache | 0        |[/b]
| Qcache_total_blocks     | 1        |
+-------------------------+----------+
8 ROWS IN SET (0.00 sec)              
 
mysql> SELECT * FROM Libro;
 
mysql> SELECT * FROM Respuesta;
mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+----------+
| Variable_name           | VALUE    |
+-------------------------+----------+
| Qcache_free_blocks      | 1        |
| Qcache_free_memory      | 16765336 |
| Qcache_hits             | 0        |
| Qcache_inserts          | 2        |
| Qcache_lowmem_prunes    | 0        |
| Qcache_not_cached       | 6        |
[b]| Qcache_queries_in_cache | 2        |[/b]
| Qcache_total_blocks     | 7        |
+-------------------------+----------+
8 ROWS IN SET (0.00 sec)
 

| Qcache_queries_in_cache | 0        |
| Qcache_queries_in_cache | 2        |

Hago referencia al resultado en negrita obtenida de la cache (La cache en MySQL va guardando peticiones en memoria siempre que se use SELECT pero se resetea completamente al usar otra clausula (digase INSERT, DELETE, UPDATE)

Código
 
mysql> INSERT INTO Libro VALUES(5,'no se', 'nananana');
Query OK, 1 ROW affected (0.00 sec)
 
mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+----------+
| Variable_name           | VALUE    |
+-------------------------+----------+
| Qcache_free_blocks      | 2        |
| Qcache_free_memory      | 16766872 |
| Qcache_hits             | 0        |
| Qcache_inserts          | 2        |
| Qcache_lowmem_prunes    | 0        |
| Qcache_not_cached       | 8        |
[b]| Qcache_queries_in_cache | 1        |[/b]
| Qcache_total_blocks     | 5        |
+-------------------------+----------+
8 ROWS IN SET (0.00 sec)
 

| Qcache_queries_in_cache | 1        |


Nuevamente recalco en la negrita, vez como elimino 1 registro del cache (que tenia 2 valores) al yo utilizar INSERT? si utilizo otra clausula como UPDATE o DELETE ese ultimo registro que queda tambien sera eliminado de cache, y al retornar a hacer un SELECT este nuevo dato volvera a guardarse en cache, y luego al usar insert, delete o update voila... a eliminar..

No es recomendable en situaciones donde haya mucha solicitud de escritura o actualizacion de una DB (Al menos MySQL) activar la cache del motor, es preferible tenerla en estos casos desactivada. Asi te evitas lecturas constantes de disco (tanto en escritura como lectura y eliminacion).

Navegación

[0] Índice de Mensajes

[*] Página Anterior