executar criação de uma trigger no banco Mysql via Delphi
Boa tarde, eu estou implementando um banco de dados Mysql e queria criar via script dentro do delph.
quero rodar o seguinte script:
se eu rodar esse script via phpMyadmin funciona, se rodo via MySql workbench tambem funciona
mas preciso rodar dentro do delphi
tipo:
Porém, dentro do delphi não executa. Alguem sabe como criar isso no delphi?
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
Curtidas 0