Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Rudolfo

ORACLE - TRIGGER

Recommended Posts

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?

Share this post


Link to post
Share on other 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."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.