Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

replace o insert que es mejor?

Estas en el tema de replace o insert que es mejor? en el foro de Mysql en Foros del Web. que es mejor utilizar para guardar datos a una tabla, el REPLACE o el INSERT. pss no se pero me parece que el replace es ...
  #1 (permalink)  
Antiguo 10/06/2011, 10:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 29
Antigüedad: 13 años, 7 meses
Puntos: 1
Pregunta replace o insert que es mejor?

que es mejor utilizar para guardar datos a una tabla, el REPLACE o el INSERT.
pss no se pero me parece que el replace es mejor
  #2 (permalink)  
Antiguo 10/06/2011, 11:59
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: replace o insert que es mejor?

Se usan las dos cosas, pero sin difentes. INSERT crea una fila nueva, mientras que UPDATE la modifica.
  #3 (permalink)  
Antiguo 10/06/2011, 12:10
 
Fecha de Ingreso: septiembre-2010
Mensajes: 29
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: replace o insert que es mejor?

Cita:
Iniciado por mayid Ver Mensaje
Se usan las dos cosas, pero sin difentes. INSERT crea una fila nueva, mientras que UPDATE la modifica.
nooo pero yo hablo es de la sentencia REPLACE no update
  #4 (permalink)  
Antiguo 10/06/2011, 12:14
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: replace o insert que es mejor?

Ah! Perdon! Estoy distraido.
No conozco REPLACE.
  #5 (permalink)  
Antiguo 12/06/2011, 06:46
Avatar de Silkon  
Fecha de Ingreso: mayo-2011
Ubicación: Lugo
Mensajes: 201
Antigüedad: 13 años
Puntos: 20
Respuesta: replace o insert que es mejor?

Insert - Inserta una linea nueva
Update - Actualiza una linea existente
Replace - Actualiza una linea existente o la inserta de no existir.

Creo que es así, pero no lo aseguro 100%.

Saludos
  #6 (permalink)  
Antiguo 12/06/2011, 07:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: replace o insert que es mejor?

Exactamente así: REPLACE hace lo que literalmente significa la palabra: reemplazar un registro dado por otro si existe (requiere acceso al valor de la clave primaria) y lo crea si no lo encuentra.
Hay un pequeñísimo problema: No funciona correctamente en tablas relacionales donde si se usa contra la tabla base. Esto sucede porque para reemplazar un registro, primero lo debe borrar, y si la tabla es usada como referencia como FK desde otras tablas, esto choca contra la integridad referencial. Si no se ha determinado un CASCADE, no te dejará reemplazarla porque no la puede borrar. Y si has puesto CASCADE, puede eliminar todos los registros vinculados, aunque esa no haya sido tu intención.
No te debes olvidar que las restricciones de integridad referencial tienen jerarquía superior a cualquier otra operación.
Además, si usas REPLACE con solo un grupo de columnas de la tabla, el resto de las columnas serán puestas a NULL, porque un REPLACE no es un UPDATE. No hace una copia del registro reemplazado y actualiza valores: crea uno nuevo, donde esos valores no están llegando y por tantro son NULL.
Esto tiene dos problemas: Si las columnas omitidas son NOT NULL, el REPLACE no se podrá efectuar, y si tenían valores, los pierdes.

Sintetizando:
- El REPLACE no es un UPDATE, es más un INSERT. Sólo es eficiente en ciertos contextos, donde la inserción se deba realizar si o si.
- Si no vas a usar todos los valores que puedan existir en esa tabla originalmente, no te conviene porque perderás datos.
- Si hay dependencias con esa tabla, tendrás problemas al realizarlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: insert, replace
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:30.