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

afroman110

oracle data do sistema

7 mensagens neste tópico

como ´´e que faço em oracle para ir buscar a data de "hoje" para gurdar num campo de uma tabela num trigger??


CREATE OR REPLACE TRIGGER historico 
after UPDATE ON casa
for each row
BEGIN
insert into histcasa
values ( x, y, z)


o que eu quero saber ´´e o que ´´e que tenho que por em vez de x para ficar a data de hoje.

desde j´´a agradeço resposta rapida..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok, obrigado, acho que e isso

;)

mas agora tou com outro prob..

:hmm:

CREATE OR REPLACE TRIGGER historico 
AFTER UPDATE ON casa FOR EACH ROW
BEGIN
  INSERT
  INTO histcasa
  VALUES ( 
  sysdate,
  OLD.cod_casa,   
  OLD.cod_cliente,
  OLD.tipo_casa,  
  OLD.tipologia, 
  OLD.ano_construcao,
  OLD.area,  
  OLD.aluguer, 
  OLD.venda,  
  OLD.preco_aluguer, 
  OLD.preco_venda,   
  OLD.obs,
  OLD.cod_agencia, 
  OLD.morada,   
  OLD.regiao,   
  OLD.localizacao,  
  NEW.cod_cliente,
  NEW.tipo_casa,
  NEW.tipologia,
  NEW.ano_construcao,
  NEW.area,
  NEW.aluguer,
  NEW.venda,
  NEW.preco_aluguer,
  NEW.preco_venda,
  NEW.obs,
  NEW.cod_agencia,
  NEW.morada,
  NEW.regiao,  
  NEW.localizacao);
END;

quando tento compilar isto da-me dois erros estranhos.. :wallbash:

Error(6,65530): PL/SQL: SQL Statement ignored

Error(38,7): PL/SQL: ORA-00984: column not allowed here

os caracteres dos sitios em que esta a dar erro men tao pouco existem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Error(6,65530):

significa

erro linha 6 coluna 65530

Error(38,7):

e este ´´e a mesma sintax

linha 38, coluna 7

(que ´´e a ultima linha)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

CREATE OR REPLACE TRIGGER historico

AFTER UPDATE ON casa FOR EACH ROW

REFERENCES NEW AS NEW OLD AS OLD

Begin

(...)

E depois para referenciares as colunas da tabela tens de fazer :old ou :new

isso deve-te resolver o problema ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

quando tens OLD.xxxx ou NEW.yyyy

deverias ter :OLD.xxxx e :NEW.yyyy

portanto, penso que o que te falta são os dois pontos  ":"

já agora.. uma sujestão:

deves sempre colocar no statement INSERT INTO table (a, b, c ....) VALUES (....)

ou seja, deves colocar o nome das colunas da tabela... porque, imagina que alteras a tabela porque precisas de uma nova coluna... lá tens tu que alterar também o trigger e todos os inserts que tenhas espalhados por procedimentos e packages... and so on ...

no entanto, se tiverres os nomes das colunas.. e desde que a nova coluna tenha um valor default.. já não tens esse problema de manutenção.. o todos os inserts continuam válidos ;)

0

Partilhar esta mensagem


Link 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