Ir para conteúdo
Fórum Script Brasil

winthorp

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por winthorp

  1. Olá pessoal,

    estou me debatendo a um bom tempo e não consegui resolver a seguinte situação:

    - Tenho uma tabela (TAB_A) com os campos codFuncionario e valorComissao onde faço um INSERT que dispara uma TRIGGER. Essa TRIGGER deverá inserir na TAB_B o codFuncionario e valorComissao.

    - Na TAB_B, o codFuncionario não poderá ser repetido de forma que se esse código ainda não existir eu faço um INSERT, se já existir, devo fazer um UPDATE apenas no campo valorComissao.

    Não consigo criar uma TRIGGER que verifique se o codFuncionario que está sendo inserido na TAB_B já existe.

    TAB_A

    codFuncionario <--- O Mesmo funcionario pode ter várias comissões (vários registros). Cada insert dispara a TRIGGER para lançar a soma da comissão na TAB_B

    valorComissao

    TAB_B

    codFuncionario <--- Não pode ser repetido

    valorComissao <--- receberá a soma das comissões da TAB_A(lógica já implementada no java)

    Abaixo, segue uma tentativa de criar a TRIGGER onde tentei fazer algo parecido com o tutorial desse link.

    http://www.devmedia.com.br/post-8088-MySQL-TRIGGERS.html

    Agradeço qualquer ajuda.

    CREATE TRIGGER   
        TRIG_COMISSAO   
        AFTER   
        INSERT   
    ON   
        TAB_A   
        FOR EACH ROW   
    BEGIN   
      SELECT IF(codprofissional=1,'EXISTE','não EXISTE') codprofissional FROM TAB_B <-- SE RODAR ESSE SELECT ISOLADAMENTE, FUNCIONA   
      IF(@codprofissional='EXISTE') THEN   
        UPDATE TAB_B SET VALORCOMISSAO=NEW.VALORCOMISSAO   
      ELSE   
          INSERT INTO TAB_B SET CODPROFISSIONAL=NEW.CODPROFISSIONAL, VALORCOMISSAO=0   
      END IF   
    END;
    CREATE TRIGGER
        TRIG_COMISSAO
        AFTER
        INSERT
    ON
        TAB_A
        FOR EACH ROW
    BEGIN
      SELECT IF(codprofissional=1,'EXISTE','não EXISTE') codprofissional FROM TAB_B <-- SE RODAR ESSE SELECT ISOLADAMENTE, FUNCIONA
      IF(@codprofissional='EXISTE') THEN
        UPDATE TAB_B SET VALORCOMISSAO=NEW.VALORCOMISSAO
      ELSE
          INSERT INTO TAB_B SET CODPROFISSIONAL=NEW.CODPROFISSIONAL, VALORCOMISSAO=0
      END IF
    END;
    Script line: 1 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF(@codprofissional='EXISTE') THEN UPDATE TAB_B SET VALORCOMISSAO=NEW' at line 10 -- A TRIGGER ABAIXO FUNCIONA, MAS NÃO FAZ A VERIFICAÇÃO QUE PRECISO
    CREATE TRIGGER   
        TRIG_COMISSAO   
        AFTER   
        INSERT   
    ON   
        TAB_A   
        FOR EACH ROW   
        INSERT INTO TAB_B   
        SET CODPROFISSIONAL=NEW.CODPROFISSIONAL, VALORCOMISSAO=0;

×
×
  • Criar Novo...