Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, estou com uma dúvida e não consigo encontrar uma solução,
preciso criar uma trigger que verifique se já existe esse campo inserido em uma outra tabela, caso não exista ele faz o insert
o meu insert está dessa forma:
CREATE OR REPLACE TRIGGER "SCO_TRG_GERA_SENHA"
AFTER UPDATE on laudo_paciente
REFERENCING NEW AS N OLD AS A
FOR EACH ROW
BEGIN
insert into
sco_laudo(nr_prescricao,
nr_senha,
dt_validade)
values (:N.nr_prescricao,
DBMS_RANDOM.STRING('x',8),
sysdate);
end;
Como faço pra fazer uma verificação se existe um valor igual de nr_prescrição na tabela sco_laudo?
Porque se existir não posso dar um insert, pois é um numero único.Outra solução
CREATE OR REPLACE TRIGGER "SCO_TRG_GERA_SENHA"
AFTER UPDATE on laudo_paciente
REFERENCING NEW AS N OLD AS A
FOR EACH ROW
BEGIN
BEGIN
insert into
sco_laudo(nr_prescricao,
nr_senha,
dt_validade)
values (:N.nr_prescricao,
DBMS_RANDOM.STRING('x',8),
sysdate);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
NULL;--FAZ NADA
WHEN OTEHRS THEN
RAISE;--RAISE NO ERRO
END;
end;
Consegui resolver dessa forma
CREATE OR REPLACE TRIGGER "SCO_TRG_GERA_SENHA"
AFTER UPDATE on laudo_paciente
FOR EACH ROW
DECLARE
vNR_PRESCRICAO number(14);
BEGIN
IF (:OLD.DT_LIBERACAO <> :NEW.DT_LIBERACAO) or (:NEW.DT_LIBERACAO is not null) THEN