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

Insert where not exist no funciona

Estas en el tema de Insert where not exist no funciona en el foro de Mysql en Foros del Web. Muy buenas, Primero de todo decir que este post no se si va aqui o en el de PHP porque trato de hacer un insert ...
  #1 (permalink)  
Antiguo 26/12/2012, 14:45
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 6 meses
Puntos: 0
Insert where not exist no funciona

Muy buenas,

Primero de todo decir que este post no se si va aqui o en el de PHP porque trato de hacer un insert mediante php.

Bueno os explico mi problema, quiero añadir un valor en una base de datos pero quiero que si ese valor ya esta en la BD no se añada.
Es decir añado una clave primaria AAAAA y si luego quiero añadir la misma, que no lo haga pero que no salga error.

Este es mi codigo:
Código MySQL:
Ver original
  1. INSERT INTO Persona (DNI, Nom, Cognom, Contrasenya, Direccio, CP, Ciutat, EMail, Telef)
  2. ('$DNI_entiti','$Nombre_entiti','$Apellidos_entiti',md5($PSW_entiti),'$Direccion_entiti','$CP_entiti','$Ciudad_entiti','$Email_entiti','$Mobil_entiti')
  3.     SELECT DNI FROM Persona WHERE DNI='$DNI_entiti');

y el error que me sale es el siguiente:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NOT EXISTS ( SELECT DNI FROM Persona WHERE DNI='46809934P')' at line 4

Haber si me podeis ayudar, un saludo

Última edición por gnzsoloyo; 26/12/2012 a las 14:58 Razón: Codigo mal etiquetado. No se permite codifiacion de lenguajes no SQL.
  #2 (permalink)  
Antiguo 26/12/2012, 15:02
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: Insert where not exist no funciona

En primer lugar, el WHERE no existe en el INSERT.
En segundo lugar, MySQL no admite (y tampoco otros DBMS) que se consulte la misma tabla que se está insertando.
Si DNI es PK, lo más simple es hacer un INSERT IGNORE:
Código MySQL:
Ver original
  1. INSERT IGNORE INTO Persona (DNI, Nom, Cognom, Contrasenya, Direccio, CP, Ciutat, EMail, Telef)
  2. VALUES('$DNI_entiti', '$Nombre_entiti', '$Apellidos_entiti', MD5('$PSW_entiti'), '$Direccion_entiti', '$CP_entiti', '$Ciudad_entiti', '$Email_entiti', '$Mobil_entiti')
Eso simplemente no generará mensajes de error si el DNI ya existe.
Eso si: para que se cumpla, DNI debe ser la clave primaria.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 27/12/2012, 05:36
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Insert where not exist no funciona

Muchas gracias, ahora con esto si esta no lo añade y si no esta si que lo añade.

Un saludo

Etiquetas: exist, insert, php, select, sql
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 08:21.