Muy bien, tengo una pregunta, no es realmente un problema."REEMPLAZAR" versus INSERTAR [SI]
Tengo una tabla en mi base de datos, bastante pequeña, solo 3 columnas pero con posibilidades de crecer. Tengo dos soluciones para mi problema, pero no estoy seguro de por qué usar una u otra.
Tengo un dato que puede o no estar en la base de datos. Dos formas de resolver esto. Tengo la identificación única, así que es fácil de verificar.
- Comprobar si los registros existe en la base de datos, y si no, la base de datos
INSERT INTO
- Uso
REPLACE INTO
, porque tengo la ID ya.
Mi pregunta ahora es. Cuál es mejor usar ¿Cuáles son los pros y los contras en el uso de cualquiera de los 2 resultados? ¿O hay un mejor resultado?
Una nota, los datos son exactamente los mismos, por lo que no hay posibilidad de que el registro se actualice con un valor más reciente. Por lo tanto, el REPLACE INTO
insertará datos que ya están allí.
Tenga cuidado, 'REPLACE INTO' se implementa internamente como' DELETE' y luego como 'INSERT'. La eliminación es una eliminación normal, lo que significa que comprobará las claves externas y obedecerá las cláusulas 'ON DELETE'. Usted * probablemente * quiere 'INSERT INTO ... ON DUPLICATE KEY UPDATE ...' en su lugar de todos modos. – Charles
Pero, ¿cuál es la mejor práctica aquí? Y por qué –
Además, si intenta actualizar una fila con los mismos valores (existentes), MySQL detectará que los valores son los mismos y omitirá la actualización, ahorrando tiempo, bloqueos, etc. Otra razón para usar 'INSERTAR INTO ... ON DUPLICATE KEY UPDATE ... 'frente a eliminar la fila existente primero. –