Red de conocimiento informático - Problemas con los teléfonos móviles - La diferencia entre Reemplazar INTO e INSERTAR INTO

La diferencia entre Reemplazar INTO e INSERTAR INTO

La diferencia entre Reemplazar INTO e INSERT INTO:

El funcionamiento de REPLACE es muy similar al de INSERT. La única excepción es que si un registro antiguo en la tabla tiene el mismo valor que un registro nuevo para una CLAVE PRIMARIA o un índice ÚNICO, el registro antiguo se elimina antes de insertar el nuevo registro.

Tenga en cuenta que, a menos que la tabla tenga una CLAVE PRIMARIA o un índice ÚNICO, no tiene sentido utilizar una instrucción REPLACE. Esta declaración será la misma que INSERT porque no se utiliza ningún índice para determinar si la nueva fila replica otras filas.

Todos los valores de las columnas se toman de los valores especificados en la sentencia REPLACE. Todas las columnas que faltan se configuran con sus valores predeterminados, al igual que INSERT. No puede hacer referencia a un valor de la fila actual ni utilizar un valor en una fila nueva. Si utiliza una asignación como "SET col_name = col_name + 1", la referencia al nombre de la columna de la derecha se trata como DEFAULT(col_name). Por lo tanto, esta asignación es equivalente a SET col_name = DEFAULT(col_name) + 1.

Para poder usar REPLACE, debes tener permisos INSERTAR y ELIMINAR en la tabla.

La sentencia REPLACE devuelve un número que indica el número de filas afectadas. Este número es la suma del número de filas eliminadas e insertadas. Si este número es 1 para un REEMPLAZO de una sola fila, entonces se inserta una fila y no se elimina ninguna fila. Si este número es mayor que 1, se eliminan una o más filas antiguas antes de insertar una nueva. Si una tabla contiene varios índices únicos y la nueva fila copia los valores de diferentes filas antiguas en diferentes índices únicos, es posible que una sola fila reemplace varias filas antiguas.

El número de filas afectadas se puede determinar fácilmente si REPLACE solo agregó una fila o si REPLACE también reemplazó otras filas: verifique si el número es 1 (agregar) o mayor (reemplazar).

Si está utilizando la API de C, puede obtener el número de filas afectadas utilizando la función mysql_affected_rows().

Actualmente, no se puede reemplazar en una tabla y seleccionar de la misma tabla en una subconsulta.

La siguiente es una descripción detallada del algoritmo (este algoritmo también se utiliza para CARGAR DATOS...REPLACE):

1. Intente insertar una nueva fila en la tabla<. /p>

2 Cuando una inserción falla debido a un error de clave duplicada para una clave principal o clave única:

a. >

b. Intente insertar nuevas filas en la tabla nuevamente

Utilice el siguiente formato:

REPLACE [LOW_PRIORITY | DELAYED]

[INTO] tbl_name [(col_name,.. .)]

VALUES ({expr | DEFAULT},…),(…),…

O:

REEMPLAZAR [ LOW_PRIORITY | DELAYED]

p>

[INTO] tbl_name

SET col_name={expr | DEFAULT},…

O:

REPLACE [LOW_PRIORITY | DELAYED]

[INTO] tbl_name [(col_name,...)]

SELECT…

Espero que te ayude