PostgreSQL - evitar registro duplicados???

 
Vista:
sin imagen de perfil

evitar registro duplicados???

Publicado por luis (20 intervenciones) el 02/10/2014 21:43:06
este code me hace un consulta y quiero que me evite agregar dos registro con el mismo banco y el mismo numeroref
osea que no me deje duplicar aca el code


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
include ('conect_bd.php');
 
$banco = $_REQUEST['banco'];
$numeroref = $_REQUEST['numeroref'];
$query = "SELECT  numeroref FROM planpag WHERE numeroref='$numeroref'";
$query = pg_query($query);
 if($query)
 echo "ya existe este registro";
 else{
 echo "holaaa";
 }
$query2 = sprintf("INSERT INTO planpag VALUES ('%s','%s','%s','%s','%s','%s','%s')",$_REQUEST['cedula'],$_REQUEST['idinmu'],$_REQUEST['fecha'],$_REQUEST['banco'],$_REQUEST['numeroref'],$_REQUEST['monto'],$_REQUEST['nombre']);
$query2 = pg_query($query2);
if($query2)
echo "Inserción completa de pagos!";
else{
echo "<p align='center' style='font-size:34px'>REGISTRO DE PAGO EXITOSO!</a> ".pg_last_error();
}
echo "<h1 align='center'><form method='post' action='index.php'>
<input type='submit' value='Regresar al sistema' />
</form></h1>";
 
echo "<h1 align='center'><form method='post' action='consultarpago2.php'>
<input type='submit' value='Consultar Pago' />
</form></h1>";
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

evitar registro duplicados???

Publicado por martin (121 intervenciones) el 03/10/2014 02:37:57
Eso se define cuando se diseña la base de datos, puntualmente en una entidad o tabla se define la clave o identidad que puede estar definida por 1 o mas columnas,como en tu caso la clave principal o identidad es banco y numeroref, al momento de insertar los datos,el mismo motor de base de datos va a verificar esta integridad de identidad y te va a devolver una excepción de clave duplicada y ya con eso te quedas tranquilo que nunca se va insertar esa clave duplicada.

Si por alguna razon queres seguir con el codigo como lo tenes,seria algo como:

$query = "SELECT numeroref FROM planpag WHERE numeroref='$numeroref' AND banco='$banco' ";
o algo asi.

SAludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

evitar registro duplicados???

Publicado por luis (20 intervenciones) el 03/10/2014 15:39:04
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
 
include ('conect_bd.php');
 
$banco = $_REQUEST['banco'];
$numeroref = $_REQUEST['numeroref'];
 
$query = "SELECT numeroref FROM planpag WHERE numeroref='$numeroref' ";
 
$query = pg_query($query);
 
	if($query)
	echo "YA EXISTE UN NUMERO DE REFERENCIA DEL MISMO BANCO";
	else{
				$query2 = sprintf("INSERT INTO planpag VALUES ('%s','%s','%s','%s','%s','%s','%s')",$_REQUEST['cedula'],$_REQUEST['nombre'],$_REQUEST['idinmu'],$_REQUEST['fecha'],$_REQUEST['banco'],$_REQUEST['numeroref'],$_REQUEST['monto']);
 
				$query2 = pg_query($query2);
 
				if($query2)
 
				echo "<p align='center' style='font-size:34px'>REGISTRO DE PAGO EXITOSO!</a> ";
				else{
				echo "<p align='center' style='font-size:34px'>REGISTRO DE PAGO EXITOSO!</a> ".pg_last_error();
 
		 			}
	     }
 
echo "<h1 align='center'><form method='post' action='index.php'>
<input type='submit' value='Regresar al sistema' />
</form></h1>";
 
 
echo "<h1 align='center'><form method='post' action='consultarpago2.php'>
<input type='submit' value='Consultar Pago' />
</form></h1>";
?>

ASI POR ENDE NO DEBERIA DUPLICAR REGISTRO DEL BANCO Y NUMERO REFERENCIA..


PERO SI AUN LOS REGISTRA


ALGUIEN PODRIA AYUDARME
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

evitar registro duplicados???

Publicado por martin (121 intervenciones) el 04/10/2014 14:54:59
Estas controlando mal en el sql,ya que solo estas consultando por numeroref y te falta por por banco y ademas te recomiendo para saber si se encontro un registro es verificar la cantidad de registros que retornó,si hay cero registros podes insertar,si no clave duplicada.

Mejor usa constrainst.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar