Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Ajuda com Trigger e Schedule


ricardo.bezerra

Question

Pessoal, boa tarde!

Sou novato em MySQL e gostaria de pedir ajuda pra funcionalidades de uma Trigger e Schedule..

Trigger

CREATE TRIGGER Parametros
AFTER INSERT ON {AQUI VAI O QUE??????}
FOR EACH ROW
BEGIN
INSERT INTO
test.BACKOFFICE (tipo_backoffice)
SELECT tipo_teste FROM test.Teste WHERE tipo_teste = 'BACKOFFICE';
INSERT INTO
test.Monitoramento (tipo_monitoramento)
SELECT tipo_teste FROM test.Teste 
WHERE tipo_teste 
IN('SCPC_END_DATE','SCPC_INIT_DATE','RENDA_END_DATE','RENDA_INIT_DATE','SCORE_END_DATE','SCORE_INIT_DATE','CHEQUE_END_DATE','CHEQUE_INIT_DATE','INIT_DATE',
  'END_DATE');
INSERT INTO
test.PDV (tipo_pdv)
SELECT tipo_teste FROM test.Teste WHERE tipo_teste IN('CAIXA','OPERADOR','RESULTADO')
END;

Schedule

CREATE EVENT Tipos_Plataforma
ON SCHEDULE AT EVERY 2 HOUR
DO Parametros;

Grato desde já.

Abraços.

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

O resultado final seria esse, mas não funciona..tá errada...verifiquei e encontrei o que vai na linha 2...

CREATE TRIGGER Parametros
BEFORE UPDATE ON pla_parametros
FOR EACH ROW
BEGIN
INSERT INTO
test.BACKOFFICE (tipo_backoffice)
SELECT tipo_teste FROM test.Teste WHERE tipo_teste = 'BACKOFFICE';
INSERT INTO
test.Monitoramento (tipo_monitoramento)
SELECT tipo_teste FROM test.Teste 
WHERE tipo_teste 
IN('SCPC_END_DATE','SCPC_INIT_DATE','RENDA_END_DATE','RENDA_INIT_DATE','SCORE_END_DATE','SCORE_INIT_DATE','CHEQUE_END_DATE','CHEQUE_INIT_DATE','INIT_DATE',
  'END_DATE');
INSERT INTO
test.PDV (tipo_pdv)
SELECT tipo_teste FROM test.Teste WHERE tipo_teste IN('CAIXA','OPERADOR','RESULTADO');
END
Edited by ricardo.bezerra
Link to comment
Share on other sites

  • 0

Em

CREATE TRIGGER Parametros
AFTER INSERT ON {AQUI VAI O QUE??????}
Coloque o nome da tabela que executará o trigger a cada atualização dela (No seu caso após cada inserção de registro nela)

Em

CREATE EVENT Tipos_Plataforma
ON SCHEDULE AT EVERY 2 HOUR
DO Parametros;
Não vai funcionar.

O event está tentando disparar uma trigger quando deveria estar tentando disparar uma função ou uma procedure.

Triggers só são disparadas por tabelas e quando estas sofrem as atualizações para qual foram programadas.

Link to comment
Share on other sites

  • 0

Ficou mais ou menos assim, mas falta a condição no IF que não sei como fazer e não acho nada pra dar uma idéia:

CREATE PROCEDURE `sp_parametros`() 
BEGIN 
 IF [falta aquio update não funciona]????UPDATE test.Teste [falta aqui o update não funciona]???? THEN
INSERT INTO test.BACKOFFICE (tipo_backoffice)
SELECT tipo_teste FROM test.Teste 
WHERE tipo_teste 
IN('BACKOFFICE');
INSERT INTO test.Monitoramento (tipo_monitoramento)
SELECT tipo_teste FROM test.Teste 
WHERE tipo_teste 
IN('SCPC_END_DATE','SCPC_INIT_DATE','RENDA_END_DATE','RENDA_INIT_DATE',
  'SCORE_END_DATE','SCORE_INIT_DATE','CHEQUE_END_DATE','CHEQUE_INIT_DATE',
  'INIT_DATE','END_DATE');
INSERT INTO test.PDV (tipo_pdv)
SELECT tipo_teste FROM test.Teste 
WHERE tipo_Teste 
IN('CAIXA','OPERADOR','RESULTADO');
END; 
Link to comment
Share on other sites

  • 0

Seria assim:

Crie a procedure para executar o que desejas.

Crie um trigger para acionar a procedure.

Crie um event para executar a procedure de tempos em tempos.

/* Código da Procedure */
DELIMITER $$;

DROP PROCEDURE IF EXISTS `nomedobancodedados`.`sp_parametros`$$

CREATE PROCEDURE `sp_parametros`()
BEGIN
   INSERT INTO test.BACKOFFICE (tipo_backoffice)
   SELECT tipo_teste FROM test.Teste WHERE tipo_teste = 'BACKOFFICE';
   
   INSERT INTO test.Monitoramento (tipo_monitoramento)
   SELECT tipo_teste FROM test.Teste
   WHERE tipo_teste
   IN('SCPC_END_DATE','SCPC_INIT_DATE','RENDA_END_DATE','RENDA_INIT_DATE','SCORE_END_DATE','SCORE_INIT_DATE','CHEQUE_END_DATE','CHEQUE_INIT_DATE','INIT_DATE',
'END_DATE');

   INSERT INTO test.PDV (tipo_pdv)
   SELECT tipo_teste FROM test.Teste WHERE tipo_teste IN('CAIXA','OPERADOR','RESULTADO');
END$$

DELIMITER ;$$
/* Código do Trigger */
DELIMITER $$;

DROP PROCEDURE IF EXISTS `nomedobancodedados`.`trig_parametros`$$

CREATE TRIGGER trig_parametros AFTER INSERT ON nomedatabela
FOR EACH ROW
BEGIN
   CALL sp_parametros;
END;

DELIMITER ;$$
/*Codigo do event*/
DELIMITER $$;

CREATE EVENT Tipos_Plataforma
ON SCHEDULE AT EVERY 2 HOUR
DO CALL sp_parametros;

DELIMITER ;$$
Não esqueça de Ligar o Event Scheduler

SET GLOBAL event_scheduler = ON;

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...