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.