[firebase-br] RES: Trigger com campo não presente na sql

Kelver Merlotti kmerlotti em gmail.com
Qui Jun 17 08:12:22 -03 2010


Eduardo Pombo: DEFAULT é útil somente no INSERT e no caso, preciso
dele também para o UPDATE. De qualquer forma, obrigado pela força. ;)

Sandro: Exatamente! Independente do valor que já estiver no campo
CODIGO, se este campo for mensionado no UPDATE/INSERT, devo respeitar
o valor que está vindo na instrução, caso contrário - campo CODIGO não
presente na instrução - o valor dele deve passar para zero.

Abraço!

Kelver Merlotti
Coordenador Editorial do Portal www.ActiveDelphi.com.br
Contato: kelver em activedelphi.com.br
Google: kmerlotti em gmail.com
Msn: kmerlotti em hotmail.com
Twitter: http://twitter.com/kmerlotti
Tem um segundo? Então, dá uma olhadinha nisso:
Um site de publicidades, de Portugal, está pagando em euros (quase 3x
mais que em reais) pra quem estiver disposto a:
 * Ler anúncios
 * Visitar sites
 * Clicar em banners
 * Navegar na NET
 * Ler e-mails
 * Convidar novos usuários
O pagamento pode ser feito de várias formas!
Registra lá. Não custa nada!!! ;-)
http://www.publipt.com/pages/index.php?refid=kmerlotti



2010/6/16 Sandro <sandro_rebelo em ibest.com.br>:
> Ola, uma duvida para poder ajudá-lo
>
> Se o campo código já conter um valor, exemplo: 20
>
> E se o update não fizer menção ao campo código,  mesmo assim vc quer que ele
> passe de 20 para 0 ?
>
>
>
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
> nome de Kelver Merlotti
> Enviada em: quarta-feira, 16 de junho de 2010 18:15
> Para: FireBase
> Assunto: [firebase-br] Trigger com campo não presente na sql
>
> Fala galera, boa noite!
> Já perdi algumas horinhas brincando com isso e não consegui resolver.
> Por favor, antes de responder dizendo que eu estou maluco (rs),
> reproduzam aí pra ter certeza que funcionou:
>
> CREATE TABLE TESTE(
>   CODIGO INTEGER NOT NULL,
>   NOME VARCHAR(10))
>
> INSERT INTO TESTE VALUES (10, 'TESTE')
>
> CREATE OR ALTER TRIGGER TESTE_BIU0 FOR TESTE
> ACTIVE BEFORE INSERT OR UPDATE POSITION 0
> AS
> begin
>  IF (NEW.CODIGO IS NULL) THEN
>    NEW.CODIGO = 0;
> end
>
> O x da questão é: se nesse momento eu fizer ...
>
> UPDATE TESTE SET NOME = 'ABC' WHERE NOME = 'TESTE'
>
> ... preciso que o CODIGO seja igual a 0 (zero), ou seja, se o campo
> CODIGO não estiver no UPDATE / INSERT, preciso que ele passe para
> zero.
>
> Porém, se eu fizer...
>
> UPDATE TESTE SET NOME = 'ABC', CODIGO = 10 WHERE NOME = 'TESTE'
>
> ... aí tenho que respeitar o valor que está vindo no comando, ou seja,
> o código seria realmente 10 e não 0 (zero)!
>
> Obs.: NÃO há possibilidade, "em hipótese alguma", de eu poder alterar
> o primeiro update pra sempre passar um valor padrão para o campo
> CODSINC e comparar na trigger se está vindo este valor padrão. A
> necessidade realmente é saber se veio ou não o campo na instrução sql
> de update ou insert.
>
> Taí.. espero uma luz, já antecipando meus agradecimentos.
>
> Abraços galera!
>
> Kelver Merlotti
> Coordenador Editorial do Portal www.ActiveDelphi.com.br
> Contato: kelver em activedelphi.com.br
> Google: kmerlotti em gmail.com
> Twitter: http://twitter.com/kmerlotti
> Tem um segundo? Então, dá uma olhadinha nisso:
> Um site de publicidades, de Portugal, está pagando em euros (quase 3x
> mais que em reais) pra quem estiver disposto a:
> * Ler anúncios
> * Visitar sites
> * Clicar em banners
> * Navegar na NET
> * Ler e-mails
> * Convidar novos usuários
> O pagamento pode ser feito de várias formas!
> Registra lá. Não custa nada!!! ;-)
> http://www.publipt.com/pages/index.php?refid=kmerlotti
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>




Mais detalhes sobre a lista de discussão lista