consulta de nolock en union
Publicado por Ivonne (54 intervenciones) el 07/11/2009 17:42:29
Buenos días amigos de la web, algunas veces cuando se ejecuta el siguiente query:
select d.*
from INVMHD h (NOLOCK), INVMDT d (nolock), INVSAS s (nolock)
where h.f_alt between '20091106' and '20091106'
and (h.tpo_tra = 'ACDTRA' or h.tpo_tra = 'SMEREX')
and d.cia = h.cia
and d.alm = h.alm
and d.salm = h.salm
and d.consec_orig = h.consec_orig
and s.cia = h.cia
and s.alm = h.alm
and s.cve = h.salm
and s.cve_suc = 'A01'
union
select d.*
from INVMHD h , INVMDT d , INVSAS s
where h.referencia in (
select distinct h.referencia
from INVMHD h , INVMDT d , INVSAS s
where h.f_alt between '20091106' and '20091106'
and d.cia = h.cia
and d.alm = h.alm
and d.salm = h.salm
and d.consec_orig = h.consec_orig
and s.cia = h.cia
and s.alm = h.alm
and s.cve = h.salm
and s.cve_suc = 'A01')
and h.tpo_tra = 'DIFTRA'
and d.cia = h.cia
and d.alm = h.alm
and d.salm = h.salm
and d.consec_orig = h.consec_orig
and s.cia = h.cia
and s.alm = h.alm
and s.cve = h.salm
and (s.cve_suc = 'A01' or s.cve_suc = 'g05')
manda el siguiente mensaje :
<ERR> G05.ALM -INVMDT- La transacción (Id. de proceso 69) quedó en interbloqueo en lock recursos con otro proceso y fue elegida como sujeto del interbloqueo. Ejecute de nuevo la transacción..tengo la duda si las demas tablas aunque son las mismas igual debo de poner (nolock)..si alguien me puede asesor se lo agradezco mucho y gracias de antemano..Saludos,
select d.*
from INVMHD h (NOLOCK), INVMDT d (nolock), INVSAS s (nolock)
where h.f_alt between '20091106' and '20091106'
and (h.tpo_tra = 'ACDTRA' or h.tpo_tra = 'SMEREX')
and d.cia = h.cia
and d.alm = h.alm
and d.salm = h.salm
and d.consec_orig = h.consec_orig
and s.cia = h.cia
and s.alm = h.alm
and s.cve = h.salm
and s.cve_suc = 'A01'
union
select d.*
from INVMHD h , INVMDT d , INVSAS s
where h.referencia in (
select distinct h.referencia
from INVMHD h , INVMDT d , INVSAS s
where h.f_alt between '20091106' and '20091106'
and d.cia = h.cia
and d.alm = h.alm
and d.salm = h.salm
and d.consec_orig = h.consec_orig
and s.cia = h.cia
and s.alm = h.alm
and s.cve = h.salm
and s.cve_suc = 'A01')
and h.tpo_tra = 'DIFTRA'
and d.cia = h.cia
and d.alm = h.alm
and d.salm = h.salm
and d.consec_orig = h.consec_orig
and s.cia = h.cia
and s.alm = h.alm
and s.cve = h.salm
and (s.cve_suc = 'A01' or s.cve_suc = 'g05')
manda el siguiente mensaje :
<ERR> G05.ALM -INVMDT- La transacción (Id. de proceso 69) quedó en interbloqueo en lock recursos con otro proceso y fue elegida como sujeto del interbloqueo. Ejecute de nuevo la transacción..tengo la duda si las demas tablas aunque son las mismas igual debo de poner (nolock)..si alguien me puede asesor se lo agradezco mucho y gracias de antemano..Saludos,
Valora esta pregunta
0