Trigger não aceita domínio
Colegas esta trigger não esta aceitando o dominio que eu passei, o dominio esta correto, tanto que eu usei
no campo de outras tabelas e não deu erro.
Mas quanto eu atribuio ele a uma variavel da o erro:
[b:fbd3c267a6]Error at line 1 - Dynamic SQL Error
SQL error code =-104
Token unknown - line 3, colunm 30
d_operacao_doc[/b:fbd3c267a6]
Poderiam me ajudar por favor, abaixo esta o codigo da trigger
abaixo o dominio que criei
D_OPERACAO_DOC = VARCHAR(1) CHECK ((VALUE IN( ´E´, ´S´)));
[b:fbd3c267a6]create trigger trg_itens_bi for itens before insert[/b:fbd3c267a6]
[b:fbd3c267a6]as[/b:fbd3c267a6]
declare variable v_operacao d_operacao_doc;
[b:fbd3c267a6]begin[/b:fbd3c267a6]
/* Trigger text */
select operacao
from documentos
where codigo = new.documento
into :v_operacao;
if (:v_operacao = ´E´) then
update produtos
set saldo = saldo + new.quantidade
where codigo = new.produto;
if (:v_operacao = ´S´) then
update produtos
set saldo = saldo - new.quantidade
where codigo = new.produto;
[b:fbd3c267a6]end[/b:fbd3c267a6]
no campo de outras tabelas e não deu erro.
Mas quanto eu atribuio ele a uma variavel da o erro:
[b:fbd3c267a6]Error at line 1 - Dynamic SQL Error
SQL error code =-104
Token unknown - line 3, colunm 30
d_operacao_doc[/b:fbd3c267a6]
Poderiam me ajudar por favor, abaixo esta o codigo da trigger
abaixo o dominio que criei
D_OPERACAO_DOC = VARCHAR(1) CHECK ((VALUE IN( ´E´, ´S´)));
[b:fbd3c267a6]create trigger trg_itens_bi for itens before insert[/b:fbd3c267a6]
[b:fbd3c267a6]as[/b:fbd3c267a6]
declare variable v_operacao d_operacao_doc;
[b:fbd3c267a6]begin[/b:fbd3c267a6]
/* Trigger text */
select operacao
from documentos
where codigo = new.documento
into :v_operacao;
if (:v_operacao = ´E´) then
update produtos
set saldo = saldo + new.quantidade
where codigo = new.produto;
if (:v_operacao = ´S´) then
update produtos
set saldo = saldo - new.quantidade
where codigo = new.produto;
[b:fbd3c267a6]end[/b:fbd3c267a6]
Nlsouza
Curtidas 0
Respostas
Afarias
05/10/2009
Domínios só podem ser usados em triggers/procedures em bases de dados criadas com FB a partir da versão 2 (ou 2.1 não lembro) -- qual a versão da sua base (ODS) ?
T+
T+
GOSTEI 0
Nlsouza
05/10/2009
Estou usando o firebir 2.0.
Estou citando o problema do dominio, pq a função desta trigger é atualizar o campo SALDO na tabela produto e isso não esta acontecendo.
Na video aula da devmedia o autor construiu esta trigger no interbase 6 usando o ibconsole, ele atribuiu este dominio a variavel e deu certo. Eu baixei o interbase 6 e o ibconcole, mas quando atribui o dominio não deu certo. Se eu conseguir atualizar o campo SALDO é o que importa, senão naõ poderei continuar estudando.
Espero que tenha contibuido mais com as informaçoes.
Aguardo seu retorno
Obrigado.
Estou citando o problema do dominio, pq a função desta trigger é atualizar o campo SALDO na tabela produto e isso não esta acontecendo.
Na video aula da devmedia o autor construiu esta trigger no interbase 6 usando o ibconsole, ele atribuiu este dominio a variavel e deu certo. Eu baixei o interbase 6 e o ibconcole, mas quando atribui o dominio não deu certo. Se eu conseguir atualizar o campo SALDO é o que importa, senão naõ poderei continuar estudando.
Espero que tenha contibuido mais com as informaçoes.
Aguardo seu retorno
Obrigado.
GOSTEI 0
Afarias
05/10/2009
|Estou usando o firebir 2.0.
Confirmei na documentação, só está disponível a partir do FB 2.1 (base de dados ODS 11.1)
|Estou citando o problema do dominio, pq a função desta trigger é
|atualizar o campo SALDO na tabela produto e isso não esta acontecendo.
Uma coisa não tem a ver com a outra. Defina a trigger sem o domínio e veja o q acontece. Outra coisa, sua Trigger é mais para AFTER insert do q BEFORE -- sugiro q faça essa mudança.
ex:
|Na video aula da devmedia o autor construiu esta trigger no interbase 6
|usando o ibconsole, ele atribuiu este dominio a variavel e deu certo.
Impossível.
T+
Confirmei na documentação, só está disponível a partir do FB 2.1 (base de dados ODS 11.1)
|Estou citando o problema do dominio, pq a função desta trigger é
|atualizar o campo SALDO na tabela produto e isso não esta acontecendo.
Uma coisa não tem a ver com a outra. Defina a trigger sem o domínio e veja o q acontece. Outra coisa, sua Trigger é mais para AFTER insert do q BEFORE -- sugiro q faça essa mudança.
ex:
set term ^; create trigger trg_itens_ai for itens AFTER insert as declare variable v_operacao CHAR(1); begin select operacao from documentos where codigo = new.documento into :v_operacao; if (v_operacao = ´E´) then update produtos set saldo = saldo + new.quantidade where codigo = new.produto; if (v_operacao = ´S´) then update produtos set saldo = saldo - new.quantidade where codigo = new.produto; end
|Na video aula da devmedia o autor construiu esta trigger no interbase 6
|usando o ibconsole, ele atribuiu este dominio a variavel e deu certo.
Impossível.
T+
GOSTEI 0
Afarias
05/10/2009
esqueci o ^ no end final:
[b:7e08b6f8a8]end^[/b:7e08b6f8a8]
:roll:
T+
[b:7e08b6f8a8]end^[/b:7e08b6f8a8]
:roll:
T+
GOSTEI 0
Nlsouza
05/10/2009
O acento não nada é pq copiei o codigo de dentro do IBExpert.
vou fazer o teste conforme me pediu.
Pelo que entendi é so fazer a alteração na trigger, não precisa baixar o firebir 2.1 para resolver meu problema?
Obrigado!
vou fazer o teste conforme me pediu.
Pelo que entendi é so fazer a alteração na trigger, não precisa baixar o firebir 2.1 para resolver meu problema?
Obrigado!
GOSTEI 0
Nlsouza
05/10/2009
O acento não nada é pq copiei o codigo de dentro do IBExpert.
vou fazer o teste conforme me pediu.
Pelo que entendi é so fazer a alteração na trigger, não precisa baixar o firebird 2.1 para resolver meu problema?
Obrigado!
GOSTEI 0
Afarias
05/10/2009
|Pelo que entendi é so fazer a alteração na trigger, não precisa baixar o
|firebird 2.1 para resolver meu problema?
Isso. Vc só precisa do FB 2.1 se realmente quiser usar domínios nos códigos de triggers e stored procs. Mas isso não muda em nada o funcionamento da Trigger.
T+
|firebird 2.1 para resolver meu problema?
Isso. Vc só precisa do FB 2.1 se realmente quiser usar domínios nos códigos de triggers e stored procs. Mas isso não muda em nada o funcionamento da Trigger.
T+
GOSTEI 0