Pular para o conteúdo

Fóruns SQL e PL/SQL insert , update e delete – 2 tabelas insert , update e delete – 2 tabelas

#97822
leandrolbs
Participante

    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