› Fóruns › SQL e PL/SQL › insert , update e delete – 2 tabelas › insert , update e delete – 2 tabelas
Cara, tá testado… só monte da tabela inteira pq tem muito campo…rs
--tabela
create table hw_funcionarios(
FUN_ID NUMBER,
DS_TELEFONE VARCHAR2(15),
NR_COLETOR NUMBER(2),
TP_FUNCIONARIO NUMBER(2),
TP_SERVICO NUMBER(1),
ERRO_COLETOR VARCHAR2(300),
ATUAL_COLETOR DATE,
DS_EMAIL_1 VARCHAR2(50),
DS_EMAIL_2 VARCHAR2(50));
create table hw_funcionarios_LADOB(
FUN_ID NUMBER,
DS_TELEFONE VARCHAR2(15),
NR_COLETOR NUMBER(2),
TP_FUNCIONARIO NUMBER(2),
TP_SERVICO NUMBER(1),
ERRO_COLETOR VARCHAR2(300),
ATUAL_COLETOR DATE,
DS_EMAIL_1 VARCHAR2(50),
DS_EMAIL_2 VARCHAR2(50));
alter table HW_FUNCIONARIOS add constraint FUN_PK primary key (FUN_ID);
alter table HW_FUNCIONARIOS_LADOB add constraint FUNB_PK primary key (FUN_ID);
CREATE OR REPLACE TRIGGER TG_AIUD_HW_FUNCIONARIOS AFTER INSERT OR UPDATE OR DELETE ON HW_FUNCIONARIOS FOR EACH ROW
DECLARE
TIPO CHAR(1);
BEGIN
IF INSERTING THEN
TIPO := 'I';
ELSIF UPDATING THEN
TIPO := 'U';
ELSIF DELETING THEN
TIPO := 'D';
END IF;
--CASO SEJA INSERT
IF (TIPO = 'I') THEN
insert into hw_funcionarios_ladob
(fun_id,
ds_telefone,
nr_coletor,
tp_funcionario,
tp_servico,
erro_coletor,
atual_coletor,
ds_email_1,
ds_email_2)
values
(:NEW.fun_id,
:NEW.ds_telefone,
:NEW.nr_coletor,
:NEW.tp_funcionario,
:NEW.tp_servico,
:NEW.erro_coletor,
:NEW.atual_coletor,
:NEW.ds_email_1,
:NEW.ds_email_2);
END IF;
--CASO ESTEJA ATUALIZANDO
IF (TIPO = 'U') THEN
update hw_funcionarios_ladob
set ds_telefone = :NEW.ds_telefone,
nr_coletor =:NEW.nr_coletor,
tp_funcionario = :NEW.tp_funcionario,
tp_servico = :NEW.tp_servico,
erro_coletor = :NEW.erro_coletor,
atual_coletor = :NEW.atual_coletor,
ds_email_1 =:NEW.ds_email_1,
ds_email_2 = :NEW.ds_email_2
where fun_id = :old.fun_id;
END IF;
--CASO ESTEJA REMOVENDO
IF (TIPO = 'D') THEN
delete hw_funcionarios_ladob where fun_id = :OLD.fun_id;
END IF;
END;
insert into hw_funcionarios
(fun_id, ds_telefone, nr_coletor, tp_funcionario, tp_servico, erro_coletor, atual_coletor, ds_email_1, ds_email_2)
values
(1,'56654',1,1,1,'b','19/01/2011','eu@eu.com.be','eu@eu.com.br');
--ok
select * from jr.hw_funcionarios_ladob;
--ok
update hw_funcionarios
set ds_telefone = 11111111
where fun_id = 1;
--ok
select * from jr.hw_funcionarios_ladob;
--ok
delete from hw_funcionarios;
--ok
select * from jr.hw_funcionarios_ladob;
--ok
Tá ai, criei duas tabelinhas, e 1 trigger que trabalha nas condições do dml, se fosse da tua cidade iria pedir uma coca gelada.kkkk
[]’s