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.