Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Caros
Ralei para tratar um situação onde precisei fazer um INSERT conforme o exemplo que retornava o erro de violação da PRIMARY KEY:
INSERT INTO PEDIDOS (PEDIDO, DATA, EMPRESA, VALIDACAO)
SELECT PEDIDO, DATA, EMPRESA, VALIDACAO
FROM PEDIDOSGERAL
WHERE DATA BETWEEN CONVERT(DATE, GETDATE()-30) AND CONVERT(DATE, GETDATE())
AND ESCRITÓRIO = 'A'
Para tratar o erro usei uma função que verifica se o registro existe antes de fazer o INSERT e o codigo ficou assim:
INSERT INTO PEDIDOS (PEDIDO, DATA, EMPRESA, VALIDACAO)
SELECT A.PEDIDO, A.DATA, A.EMPRESA, A.VALIDACAO
FROM PEDIDOSGERAL AS A
WHERE A.DATA BETWEEN CONVERT(DATE, GETDATE()-30) AND CONVERT(DATE, GETDATE())
AND ESCRITÓRIO = 'A'
AND NOT EXISTS (SELECT PEDIDO
FROM PEDIDOS AS B
WHERE B.PEDIDO = A.PEDIDO)
*Não posso efetuar um DELETE usando o critério de DATA pois existe uma trava no campo VALIDACAO e quando esse for alterado para 'SIM' não pode sofrer alterações.
Pergunta: Existe alguma maneira que possa melhorar o código em busca de performace?
"Não há nada que seja bom o suficiente que não possa ser melhorado."
Carregando comentários...