Space Howen

Guías, soluciones y fragmentos de código para programadores.


Imagen del post

Cómo evitar duplicados al insertar datos en MySQL

18 Jun 2025 · 771 visitas

Uno de los problemas más comunes al trabajar con bases de datos es evitar que se inserten datos repetidos. Ya sea por error del usuario o porque un formulario se envió dos veces, si no lo controlamos, nuestra tabla puede llenarse de registros duplicados.

Hoy te muestro varias formas simples y efectivas de evitar duplicados al insertar datos en MySQL.


grupo aqui:

https://t.me/+yR3iD0q48ZRkNDA5


1. Usar una restricción UNIQUE

La forma más directa es decirle a MySQL: "no me permitas repetir este valor". Para eso usamos la restricción UNIQUE en la estructura de la tabla.


Ejemplo:

CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(100) NOT NULL UNIQUE,
nombre VARCHAR(100)
);

Con esto, no se podrá insertar dos veces el mismo correo. Si alguien lo intenta, MySQL mostrará un error.


2. Validar antes de insertar (en PHP)

Otra opción es hacer la validación con código, antes de hacer el INSERT.


Ejemplo en PHP:

<?php
$email = $_POST['email'];

$conexion = new mysqli("localhost", "usuario", "clave", "basedatos");

// Verificar si ya existe
$verificar = $conexion->prepare("SELECT id FROM usuarios WHERE email = ?");
$verificar->bind_param("s", $email);
$verificar->execute();
$verificar->store_result();

if ($verificar->num_rows > 0) {
echo "Este correo ya está registrado.";
} else {
// Insertar nuevo usuario
$insertar = $conexion->prepare("INSERT INTO usuarios (email) VALUES (?)");
$insertar->bind_param("s", $email);
$insertar->execute();
echo "Usuario registrado correctamente.";
}
?>

3. Usar INSERT IGNORE o INSERT ... ON DUPLICATE KEY UPDATE


INSERT IGNORE

Si ya existe, simplemente no lo inserta y sigue sin mostrar error.

INSERT IGNORE INTO usuarios (email, nombre)
VALUES ('ejemplo@correo.com', 'Juan');

ON DUPLICATE KEY UPDATE

Si ya existe, actualiza otro campo.

INSERT INTO usuarios (email, nombre)
VALUES ('ejemplo@correo.com', 'Juan')
ON DUPLICATE KEY UPDATE nombre = 'Juan';

Esto solo funciona si el campo email es UNIQUE.


Evitar duplicados es clave para mantener la integridad de los datos. Según tu caso, puedes elegir entre:

  1. Validar con código (ideal para formularios)
  2. Usar restricciones en la base de datos (más seguro y automático)
  3. Usar sentencias especiales como INSERT IGNORE


Etiqueta: programación