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

Eduardo Pombo eduardo em embras.net
Qua Jun 16 18:32:13 -03 2010


nao sei se entendi bem mas creio q se vc criar o campo default 0 not
null deve resolver o seu problema.


CREATE TABLE TESTE(
  CODIGO INTEGER DEFAULT 0 NOT NULL,
  NOME VARCHAR(10))

Espero ter ajudado,



Em 16 de junho de 2010 18:14, Kelver Merlotti <kmerlotti em gmail.com> escreveu:
> 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
>



-- 

Atenciosamente

José Eduardo Pombo de Barros
Gerente de Manutenção de Sistemas




Mais detalhes sobre a lista de discussão lista