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

Sandro sandro_rebelo em ibest.com.br
Qua Jun 16 22:37:47 -03 2010


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





Mais detalhes sobre a lista de discussão lista