Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Rudolfo

ORACLE - TRIGGER

Mensagens Recomendadas

Rudolfo

boas noites!!!

estou aqui com umas pequenas duvidas na criaçao dum trigger ... a meu ver , básico!!! mas como ainda sou estudante .... é normal que apareça!!!

tenho uma tabela " PEDIDO" que de entre os campos, tem um que se chama "visto" onde so aceita " S " ou " N " ....

pela logica, um pedido quando criado, ainda nao foi visualizado ... logo, este campo tem que ter " N " no seu conteudo, correcto???

entao, o objectivo do meu trigger, é que aquando do INSERT para a tabela PEDIDO ... "corrija" o campo VISTO para N, caso ele tenha um S ...

o que eu tenho é isto, mas nao funciona:

CREATE TRIGGER trata_pedidos ON pedidos

AFTER INSERT

AS

BEGIN

if :new.visto='S'

then

update

pedidos

set visto='N'

where :new.visto='S'

END;

podem-m dar uma maosinha?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Estás a mandar uma marretada na base de dados quando podes perfeitamente indicar 'N' como valor default para o campo, quando uma linha é escrita nessa tabela fica com o valor 'N', a menos que alguém indique o contrário.

Quanto ao teu trigger, era mais fácil e barato (em termos de custo) fazer essa troca no Before Insert, dado que no After Insert vais ter de fazer uma actualização a um registo que acabou de ser criado enquanto que no Before Insert, podes "corrigir" o valor do campo antes do registo ser criado.

O SQL que estás a usar não me parece válido:

update

pedidos

set visto='N'

where :new.visto='S'

Estás a misturar uma tabela com o registo que acabou de ser escrito. Deves é obter os valores da chave da tabela e usar esses valores para fazer a correcção, tipo:

if :new.visto='S'

then

update

pedidos

set visto='N'

where chave = :new.chave


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.