Código:
CREATE procedure spActHist
@docidentidad varchar(30),
@fechaincon datetime,
@fechafincon datetime,
@idtipocontrato int,
@idtipovincu int
AS
if not exists (select [idtipocontrato], [idtipovincu] from Historico where [docidentidad]=@docidentidad)
insert into
[Historico] ([docidentidad], [fechaincon], [fechafincon], [idtipocontrato], [idtipovincu])
values
(@docidentidad, @fechaincon, @fechafincon, @idtipocontrato, @idtipovincu)
seria mejor si lo tabulas, para que los que lean puedan apreciar lo que hace tu sp...
con tu sp... puede ser que no grabe porque solo validas que exista el docidentidad...
es decir, con que exista docidentidad con cualquier otro idtipovincu te va a regresar true. osea que si existe y no va a insertar nada hasta que cambies a un docidentidad que no exista con ningun idtipovinco.
en resumen, agrega idtipovincu en tu clausula where del select que mandas a if exists.
un saludo