Código PHP:
function asignarProfesor ($dbh,$codasig,$nomasig){
global $mensaje;
foreach ($_REQUEST['borrar'] as $keyRun => $run) {
$result = $dbh->prepare("insert into sig_profesor_asignatura
(id_asignatura_cso,run_prof,hrs_prof_asig)
values (?,?,?)");
$run = quita_guionrun($run);
$datos = array($codasig,$run,0);
$result = $dbh->execute($result,$datos);
if (PEAR::isError($result)) {
if ($result->getCode() == -3)
$mensaje = 'Ha seleccionado un profesor que ya existe RUN:'.$run;
else
$mensaje = $result->getDebugInfo();
$flagError = 1;
break;
}
}
if ($flagError == 0) {
$nomasig = strtolower($nomasig);
header ("Location: asig_prof_asignatura.php?codasig=$codasig&nomasig=$nomasig");
exit;
}
}
Aquí capturo el error de registro duplicado, para capturar un error de un objeto inexiste es similar ya que cada motor de base de datos devuelve un número constante del error provocado.
Me imagino si haces una consulta sobre dicha vista sobre un Front-End para PostgreSQL devería mostrarte un error en caso de no encontrarlo, acompañado del código y una descripción, cada motor de base de datos lo hace, por lo menos con los que he trabajado (Oracle, MS-SQL Server, MySQL).
Con lo que te he entregado ya tienes como investigar....
Hasta Luego .-