Inserción controlando duplicados

La creación de un nuevo registro es muy sencilla pero, como se puede controlar el error de duplicar registros (por contener campos llave en la BD).

La FAQ Inserción controlando duplicados tiene

Pertenece a la categoría:
Pregunta
La creación de un nuevo registro es muy sencilla pero, como se puede controlar el error de duplicar registros (por contener campos llave en la BD).
Respuesta de Miguel Angel Alvarez
Antes de insertar un registro debes comprobar que no está repetido y si no lo está lo insertas como de costumbre.


Imagina que quieres insertar un nuevo usuario en una base de datos y todos los usuarios deben tener nombres de usuario distintos. Primero haces una búsqueda en la base de datos de usuarios que tengan como nombre de usuario el nuevo nombre de usuario que pretendes insertar.


Si la búsqueda arroja algún registro quiere decir que ese nombre de usuario está utilizado ya, entonces no debemos insertarlo otra vez. Si la búsqueda anterior no arrojó ningún resultado quería decir que ese nombre de usuario no está utilizado y entonces podemos insertarlo sin problemas.

Volver al árbol de categoríasVolver al árbol de categorías

Comentarios

Jose

22/7/2004
Pero como evitar duplicar un registro cuyo campo clave es del tipo autonumerico y la persona le da refrescar al navegador a la pagina donde se hace la incorporacion

bistoco

31/1/2005
<?
// se hace un count de los registros ke tienen
// en el campo llave el dato $dato
$sql="SELECT COUNT(llave) FROM tabla WHERE llave='$dato'";
//
$fila=mysql_fetch_array(pg_query($sql,$conexion));
// se cuenta el numero de filas que dio como
// resultado la consulta y se bifurca
if($fila["count"]==0){
// insertas
}
else{
// ya existe un registro con ese id
}
?>

Sergio Tamagno

05/6/2006
Primero debes tener en cuenta que campo no quieres duplicado, y ese debe ser tu campo clave. Si quieres usar una clave autoincremental, debes fijar el campo que no quieres que se repita cómo unique, y así es la base de datos quien controla que ese campo no esté duplicado

Alvesor

04/1/2007
Mira lo que te recomendaria es que realizaras una consulta en tu base pero la busqueda realizala por la clave principal o tu identificador(en caso que sea autonumerico) y si existe no realices la insercion y sino existe
!ADELANTE! insert into bla bla bla

ocp001a

11/3/2009
Sería ideal que el campo que no quieres duplicado lo tengas como clave única, de ese modo puede hacer dos cosas:

Si está duplicado no hacer nada con una orden como esta:
insert IGNORE into mi_tabla (campos) values (valores)

o bien si esta duplicado actualizar así:
isert into mi_tabla ON DUPLICATE KEY UPDATE set campo=valor_nuevo

FAQ relacionadas

Para ver más FAQ relacionadas accede a las categorías:

Volver al árbol de categoríasVolver al árbol de categorías