Jump to content
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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

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.