Mostrando postagens com marcador MS SQL Server. Mostrar todas as postagens
Mostrando postagens com marcador MS SQL Server. Mostrar todas as postagens

quarta-feira, janeiro 30, 2008

Habilitando e desabilitando Triggers no SQL Server via T-SQL

Essa é uma "diquinha" bem simples, de um recurso que nem todos que lidam com o SQL Server conhecem. Através do Transact SQL (T-SQL) é possível habilitar e desabilitar triggers, sem a necessidade de excluí-las ou comentá-las (como a maiores do pessoal faz). A sintaxe é bem simples:

alter table nome_tabela
[disable, enable] trigger nome_trigger


Exemplo

Suponha que se tenha a tabela tab_venda, e nela uma trigger chamada trg_atualiza_limite_cliente. Para desabilitar essa trigger, a linha SQL ficaria como a seguir:


alter tabl
e
tab_venda

disable trigger trg_atualiza_limite_cliente


Para habiltá-la novamente, substitua disable por enable. Simples não?

Até +

domingo, novembro 25, 2007

Update usando Case

Dias atrás um colega meu de trabalho precisava realizar um UPDATE condicional, ou seja, atualizar o campo em função de outro campo. Ele logo disparou: "Dá pra usar CASE em UPDATE?".

Ficamos naquela, dá, não dá? Procuramos na net, fizemos um teste e vimos que era mesmo possível fazer isso. Confesso que nunca tinha usado isso, mas a instrução funciona que é uma beleza.

Pra mostrar como ficou a solução, vamos fazer um exemplo. Imagine que temos uma tabela de preços e precisamos ajustá-la da conforme abaixo

  1. Produtos com preço até R$ 100 sofrem reajuste de 5%;
  2. Produtos com preço de R$ 101 a R$ 500 sofrem reajuste de 3%;
  3. Produtos com preço acima de R$ 500 sofrem reajusto de 1,5%;
A intrução ficaria parecida como abaixo:

update tab_preco
set preco =
case
when preco <= 100
preco * 1.05
when preco > 100 and preco <= 500 then preco * 1.03 when preco > 500 then preco * 1.015
end


Como se vê, é muito simples e extremamente funcional. Poderia ter sido usado o valor de outro campo para a condição. Exemplo:

update tab_preco
set preco =
case grupo
when 'LIMPEZA' then preco * 1.05
when 'ALIMENTACAO' then preco * 1.1
when 'VESTUARIO' then preco * 1.05
else preco * 1.02
end


Até +

quinta-feira, outubro 19, 2006

Colocando zeros a esquerda em valor

Hoje, um dos meus colegas de trabalho estava precisando colocar zeros a esquerda no resultado de uma consulta no MS SQL Server, e ao invés de se mostrar o valor inteiro, por exemplo o nro. 10, ele precisa mostrar 00010. Aí veio a pergunta como fazer isso? Acabamos montando um "solução", não muito elegante eu confesso, mas que resolveu o problema.

Usamos a função STUFF, que insere uma string em outra, e que recebe como parâmetros a string a ser "estufada", o valor inicial aonde a outra string será inserida, o valor a ser deletado e por fim, a string a ser inserida na original.

Abaixo transcrevemos um trechinho que pode ser usado como exemplo para mais alguém que tenha o mesmo problema.

/* Variaveis do exemplo */
declare
@valor_inteiro int,
@valor_string char(6),
@string_com_zeros char(6)

/* Atribucao dos valores */
select
@valor_inteiro = 151,
@valor_string = convert(char(6), @valor_inteiro),
/* Funcao STUFF , esse é o pulo do gato! */
@string_com_zeros = stuff('00000', 7 - Len(@valor_string), Len(@valor_string), @valor_string)

select
@valor_inteiro valor_inteiro,
RTrim(@string_com_zeros) campo_preenchido

Dúvidas é só escrever...abraços
--
Fernando D. Nappe
Analista de Sistemas