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

Eliminar registro e insertar el id anterior

Estas en el tema de Eliminar registro e insertar el id anterior en el foro de Mysql en Foros del Web. Hola a todos, no estoy muy familiarizado con mysql, así que mis disculpas si este post les parece muy repetitivo aunque la verdad no he ...
  #1 (permalink)  
Antiguo 06/12/2011, 17:46
 
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 39
Antigüedad: 13 años, 1 mes
Puntos: 4
Eliminar registro e insertar el id anterior

Hola a todos, no estoy muy familiarizado con mysql, así que mis disculpas si este post les parece muy repetitivo aunque la verdad no he podido encontrar algo parecido. Cuando uno crea una tabla en mysql 5.2 workbench, por defecto se crea una clave primaria "Id" & "nombre de la tabla", pues bien esta clave es de tipo int. estoy haciendo un pequeño programa en vb6 para control de documentos y tengo una tabla llamada documento que registra la entrada y salida de todos los documentos, tiene esta estructura:

IdDoc int (PK) por default del mysql, no es autoincremental

IdDocumento varchar(30) este es el numero correlativo de los documentos, es varchar pues une los dos últimos números del año más el correlativo, así por ejemplo: si el correlativo está en 6940 y el año es 2011, entonces el numero del documento será 116940.

Fecha date

Cliente int

etc.

el asunto es que IdDoc es parecido al IdDocumento sin el numero del año, tal es así: si el IdDocumento es 116940, entonces el IdDoc (PK) será 6940. para ingresar estos dos numeros selecciono el último numero IdDoc (PK) y le sumo uno. Este es el codigo de mi procedimiento almacenado:

Código:
CREATE DEFINER=`root`@`localhost` PROCEDURE `GrabarDoc`(opt int,
TipoDoc int,
FechaDoc date,
Cliente int,
Redactor int,
Asunto varchar(2000),
TipoSal int)
BEGIN

DECLARE Corre int;
DECLARE CorreOp int;
DECLARE Fijo varchar(20);
DECLARE CorCaso varchar(100);

case opt
    WHEN 1 THEN
        SET Corre=((SELECT IdDoc 
        FROM documento ORDER BY IdDoc DESC limit 0,1 )+1);
        
        if corre is null then 
            set corre=1;
        end if;
        
        UPDATE corretemp SET CorreTemp=Corre WHERE IdCorreTemp=1;
        
        SET Fijo=(SELECT Numero FROM configuracion
        WHERE Año=year(now()));
        
        SET CorCaso=concat(Fijo,Corre);
        
        INSERT INTO documento(IdDoc,IdDocumento,TipoDoc,
        Fecha,IdCliente,IdRedactor,Asunto,IdTipoSal)
        VALUES (Corre,CorCaso,TipoDoc,
        FechaDoc,Cliente,Redactor,Asunto,TipoSal);
        
        SELECT IdDocumento from documento
        WHERE IdDoc=corre AND IdDocumento=CorCaso;
     
END CASE;
END

Por cuestiones de programación algunas veces tengo que borrar un registro pero cuando pretendo ingresar nuevamente el registro, es decir, con el mismo numero del IdDoc (PK) que borre me sale un error, pues el mysql conserva el numero a pesar de que ya lo he borrado, que debo Hacer para evitar esto?

Gracias a todos por la atención.

Etiquetas: llaves, primarias
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 07:18.