Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/12/2012, 10:05
goransh_pc
 
Fecha de Ingreso: junio-2011
Mensajes: 80
Antigüedad: 13 años, 5 meses
Puntos: 8
PDO, Chequear antes de Insertar

Hola Amigos,

Mi Escenario:
Tengo un problema y he intentado buscar una solución pero aún ando sin resultados positivos.

Tengo una tabla la cual debo actualizar automaticamente desde un archivo en un FTP. Este archivo se crea diariamente y constatemente está introduciendo reportes nuevos (líneas en él) durante el día.

Yo lo tomo, lo leo e inserto cada línea en una tabla de mi BD.

Tengo declarado Primery Key el campo día y hora para evitar reportes duplicados.

Hasta aquí todo funciona correctamente.

Problema:
Al intentar insertar el archivo a las 8 de la mañana por ejemplo, y es el primer intento en el día, se realiza sin problemas.

Si se realiza esta actualización una vez más a las 10 AM, que debe hacerce durante el día, ya que constatemente el archivo agrega nuevos reportes. El archivo por supuesto contine también los reportes que se insertaron a las 8 AM y los nuevos.

Aquí es cuando PDO me devuele un error que ya existen esos reportes. Las líneas que ya tengo en mi BD anteriormente y no puede dupicarse porque son Primary Key.

Error:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry

Pregunta:
Cómo puedo chequear en mi BD antes de actualizarla que no existan esos reportes con día y hora para no intentar insertarlos y que PDO me devuelva este error ??

Comentario:
Intenté con un bloque Try, Catch pero asi tido me continua saliendo el mismo error en pantalla.

Código PHP:
try
{
      
$sql "INSERT INTO table VALUES (campo_1, etc...)";
}
catch(
PDOException $e)
{
      
$e->getMessage();

Por supuesto si quito PDO::ERRMODE_WARNING no me sale el error, pero es porque estoy diciendole que no me lo muestre y lo que quiero es solucionar el intento de insertar antes de que detecte que sería un duplicate entry

Gracias por su ayuda de antemano.