executar criação de uma trigger no banco Mysql via Delphi

MySQL

Delphi

07/07/2016

Boa tarde, eu estou implementando um banco de dados Mysql e queria criar via script dentro do delph.
quero rodar o seguinte script:

USE `dados_principal`;

DELIMITER $$

DROP TRIGGER IF EXISTS dados_principal.abastturno_BEFORE_INSERT$$
USE `dados_principal`$$
CREATE TRIGGER `dados_principal`.`abastturno_BEFORE_INSERT` BEFORE INSERT ON `abastturno` FOR EACH ROW
BEGIN

  DECLARE vcodemp INT DEFAULT 0;
  DECLARE vdataalteracao date ;
  DECLARE vflglog varchar(1) DEFAULT 0;


  SELECT codposto FROM posto ORDER BY codposto ASC LIMIT 0,1 INTO vcodemp;
  SELECT current_time() INTO vdataalteracao;

  set new.codemp = vcodemp;
  set new.dataalteracao = vdataalteracao;
  
  IF (NEW.FLGLOG IS NULL OR NEW.FLGLOG = 'G') THEN
		SET NEW.FLGLOG = 'S';
  ELSE
		SET NEW.FLGLOG = 'A';
  END IF;

END$$
DELIMITER ;



se eu rodar esse script via phpMyadmin funciona, se rodo via MySql workbench tambem funciona
mas preciso rodar dentro do delphi
tipo:

 
           S:= ' USE `dados_principal`;  '+
            '   '+
            ' DELIMITER $$  '+
            '   '+
            ' DROP TRIGGER IF EXISTS dados_principal.abastturno_BEFORE_INSERT$$  '+
            ' USE `dados_principal`$$  '+
            ' CREATE TRIGGER `dados_principal`.`abastturno_BEFORE_INSERT` BEFORE INSERT ON `abastturno` FOR EACH ROW  '+
            ' BEGIN  '+
            '   '+
            ' DECLARE vcodemp INT DEFAULT 0;  '+
            ' DECLARE vdataalteracao date ;  '+
            ' DECLARE vflglog varchar(1) DEFAULT 0;  '+
            '   '+
            '   '+
            ' SELECT codposto FROM posto ORDER BY codposto ASC LIMIT 0,1 INTO vcodemp;  '+
            ' SELECT current_time() INTO vdataalteracao;  '+
            '   '+
            ' set new.codemp = vcodemp;  '+
            ' set new.dataalteracao = vdataalteracao;  '+
            '   '+
            ' IF (NEW.FLGLOG IS NULL OR NEW.FLGLOG = ''G'') THEN  '+
            ' SET NEW.FLGLOG = ''S'';  '+
            ' ELSE  '+
            ' SET NEW.FLGLOG = ''A'';  '+
            ' END IF;  '+
            '   '+
            ' END$$  '+
            ' DELIMITER ;  '+
            '   '+
            ' USE `dados_principal`;  '+
            '   '+
            ' DELIMITER $$  '+
            '   '+
            ' DROP TRIGGER IF EXISTS dados_principal.abastturno_BEFORE_UPDATE$$  '+
            ' USE `dados_principal`$$  '+
            ' CREATE DEFINER = CURRENT_USER TRIGGER `dados_principal`.`abastturno_BEFORE_UPDATE` BEFORE UPDATE ON `abastturno` FOR EACH ROW  '+
            ' BEGIN  '+
            ' DECLARE vcodemp INT DEFAULT 0;  '+
            ' DECLARE vdataalteracao date ;  '+
            ' DECLARE vflglog varchar(1) DEFAULT 0;  '+
            '   '+
            '   '+
            ' SELECT codposto FROM posto ORDER BY codposto ASC LIMIT 0,1 INTO vcodemp;  '+
            ' SELECT current_time() INTO vdataalteracao;  '+
            '   '+
            ' set new.codemp = vcodemp;  '+
            ' set new.dataalteracao = vdataalteracao;  '+
            '   '+
            ' IF (NEW.FLGLOG IS NULL OR NEW.FLGLOG = ''G'') THEN  '+
            ' SET NEW.FLGLOG = ''S'';  '+
            ' ELSE  '+
            ' SET NEW.FLGLOG = ''A'';  '+
            ' END IF;  '+
            ' END$$  '+
            ' DELIMITER ;  ';
            FireDacQuery1.text := s;
            FireDacQuery1.execSql;        



Porém, dentro do delphi não executa. Alguem sabe como criar isso no delphi?
Fabio Cardoso

Fabio Cardoso

Curtidas 0
POSTAR