PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum executar criação de uma trigger no banco Mysql via Delphi #559037

07/07/2016

0

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

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar