Tengo el siguiente Query: Sin embargo veo que tengo un comportamiento
particular entre:
el insert y el delete, es como si no me tomaran los datos en el mismo orden
pese a que ambos tienen el mismo predicado cuando toma los primeros 10000 en
el insert no son los mismos 10000 para el delete, cosa que a la sgte vuelta o
me dan llaves duplicadas o puedo estar borrado datos que no pase a la tabla
histórica.
Gracias por su ayuda.
insert into sms_procesados_his
select * from sms_procesados
where pr_fecha_pro < dateadd(m,-12,@w_fecha)
order by pr_recibido
*******************
delete sms_procesados
from (select * from sms_procesados
where pr_fecha_pro < dateadd(m,-12,@w_fecha)) as b
where sms_procesados.pr_recibido = b.pr_recibido
declare @w_fecha as datetime,@w_cuenta int,@w_error int
select @w_fecha = getdate()
select count(*) from sms_procesados
where pr_fecha_pro < dateadd(m,-12,@w_fecha)
set rowcount 10000
while (select count(*) from sms_procesados
where pr_fecha_pro < dateadd(m,-12,@w_fecha)) > 0
begin
begin tran
insert into sms_procesados_his
select * from sms_procesados
where pr_fecha_pro < dateadd(m,-12,@w_fecha)
order by pr_recibido
set @w_error = @@error
if @w_error!= 0
begin
rollback tran
end
delete sms_procesados
from (select * from sms_procesados
where pr_fecha_pro < dateadd(m,-12,@w_fecha)) as b
where sms_procesados.pr_recibido = b.pr_recibido
set @w_error = @@error
if @w_error!= 0
begin
rollback tran
end
commit tran
dump tran fsafs with no_log
end
Leer las respuestas