[firebase-br] Trigger com campo não presente na sql
Kelver Merlotti
kmerlotti em gmail.com
Qua Jun 16 18:14:32 -03 2010
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
Mais detalhes sobre a lista de discussão lista