Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Mensaje para no duplicar la clave primaria de la base de datos (https://www.clubdelphi.com/foros/showthread.php?t=46468)

ivansito 01-08-2007 20:35:40

Mensaje para no duplicar la clave primaria de la base de datos
 
Holas a todos, tengo un problema con una aplicación web que creado, funciona todo OK pero cuando inserto una serie de datos que van a una tabla y en esa serie de datos duplico la clave primaria y se sustituye por la anterior, quisiera saber si existe algún código que te avise para cuando intentes duplicar la clave primaria.
Muxas gracias por su atención.
Un saludo...

delphi.com.ar 01-08-2007 20:37:29

Si estas haciendo un insert en un motor ANSI SQL no puedes insertar claves repetidas, fallará automáticamente, y esa puede ser una de las formas de "darse cuenta".

¿Que motor estas usando?

ivansito 01-08-2007 20:50:17

Cita:

Empezado por delphi.com.ar
Si estas haciendo un insert en un motor ANSI SQL no puedes insertar claves repetidas, fallará automáticamente, y esa puede ser una de las formas de "darse cuenta".

¿Que motor estas usando?

Estoy usando un paquete, el phpmyadmin.
Lo he probado lo que hace es sustituir por la anterior, existe alguna forma para que no lo haga directamente? algo que te diga que esa clave primaria ya existe?¿?

Muchas gracias.

delphi.com.ar 01-08-2007 20:53:07

Com MySql??.. que motor de base de datos???


¿Puedes mostrarnos el código del insert y de ser posible el script de creación de la tabla?

ivansito 01-08-2007 21:01:00

Cita:

Empezado por delphi.com.ar
Com MySql??.. que motor de base de datos???


¿Puedes mostrarnos el código del insert y de ser posible el script de creación de la tabla?

El motor que utilizo es phpmyadmin. No lo siento no lo tengo en estos momentos aqui, pero lo puedo explicar con un ejemplo.
Tengo en php una consulta sql para introducir datos a la base de datos, si la clave primaria la he puesto con un codigo de alumno existente por otra aplicación y cuando quiera insertar otro alumno y se me vaya el dedo y ponga el mismo numero de alumno que otro ya existente en la aplicación web pero el alumno es diferente se sustituiria!!! existe algo para que al introducir un codigo existente te salte un error?¿?
(NO se puede insertar este alumno ya que existe otro alumno con el mismo codigo).

delphi.com.ar 01-08-2007 21:19:26

Este script es para demostrarte como si existe un registro con la misma clave primaria, en este caso ID_ALUMNO, el mismo motor (MySql) produce un error.
Código SQL [-]
DROP DATABASE IF EXISTS DBPRUEBA;

CREATE DATABASE DBPRUEBA;

USE DBPRUEBA;

CREATE TABLE ALUMNO
 (
   ID_ALUMNO MEDIUMINT UNSIGNED NOT NULL,
   DESCRIPCION varchar(255),

   CONSTRAINT PK_ALUMNO PRIMARY KEY (ID_ALUMNO) /* Clave Primaria */
  )
  COMMENT = 'Pozos Acumulados';
  
INSERT INTO ALUMNO (ID_ALUMNO, DESCRIPCION) VALUES (1, 'Juan Perez');

INSERT INTO ALUMNO (ID_ALUMNO, DESCRIPCION) VALUES (2, 'Pepe Sháncez');

INSERT INTO ALUMNO (ID_ALUMNO, DESCRIPCION) VALUES (2, 'Fallido');

Me interesaría ver que es lo que estas haciendo, dudo que sea algo similar a lo que te estoy mostrando, para poder guiarte. Sino vamos a trabajar sobre suposiciones y hay mucho para suponer.

Saludos!

BlueSteel 01-08-2007 21:50:43

lo que tambien puedes hacer es que cuando ingreses el codigo del alumno, consultes en la Tabla si existe un registro con ese codigo.. esto es como para no escribir todos los datos y cuando quieras almacenar te diga que ya existe el codigo y tienes escribir todo de nuevo...:p

lucasarts_18 02-08-2007 06:07:37

Cita:

Empezado por ivansito
quisiera saber si existe algún código que te avise para cuando intentes duplicar la clave primaria.
Muxas gracias por su atención.
Un saludo...

jeje, claro que sí, visita este link....:)

Hasta Luego .-

maximo_nashir 08-08-2007 00:53:51

Hola, entiendo que es algo así lo que Ivansito quiere...
 
Cita:

Empezado por ivansito (Mensaje 219247)
quisiera saber si existe algún código que te avise para cuando intentes duplicar la clave primaria.
Muxas gracias por su atención.
Un saludo...

//Conectandome ini
$link = mysql_connect("localhost", "usuario", "clave");
mysql_select_db("midb", $link);
//Conectandome Fini

$Estudiante = $_POST['EdEstudiante'];
//leyendo datos de la tabla estudiantes ini
$result = mysql_query("SELECT ESTUDIANTE FROM Taestudiantes WHERE ESTUDIANTE = '$Estudiante'");
$row = mysql_fetch_row($result);
//leyendo datos de la tabla estudiantes Fini
$Rrow = "$row[0]";

if ($Estudiante == $Rrow)
{
echo 'No lo puede agregar, porque este Estudiante ya existe';
}
else
{
echo 'Se insertó satisfactoriamente';
}


La franja horaria es GMT +2. Ahora son las 14:05:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi