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.
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;
Editado por Denis Courcy Melhorar entendimento do código
Pergunta
winthorp
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.
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 Editado por Denis CourcyMelhorar entendimento do código
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.