From f30210392127860ea044795ff24a61be42f66cd2 Mon Sep 17 00:00:00 2001 From: Guilherme Andrade Del Cantoni Date: Mon, 12 Nov 2018 11:04:38 -0200 Subject: [PATCH] Correção de instrução para alteração de nome de coluna no MySQL e SQLServer --- bd/PenMetaBD.php | 25 +++++++++++++++++++++++++ rn/PenAtualizarSeiRN.php | 6 ++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/bd/PenMetaBD.php b/bd/PenMetaBD.php index 92b9744..ea6f67f 100644 --- a/bd/PenMetaBD.php +++ b/bd/PenMetaBD.php @@ -178,6 +178,31 @@ class PenMetaBD extends InfraMetaBD { } } + public function renomearColuna($strNomeTabela, $strNomeColunaAtual, $strNomeColunaNova, $strTipo){ + + if($this->isChaveExiste($strNomeColunaAtual)) { + + $objInfraBanco = $this->getObjInfraIBanco(); + $strTableDrive = get_parent_class($objInfraBanco); + $strQuery = ''; + + switch ($strTableDrive) { + + case 'InfraMySqli': + $strQuery = sprintf("ALTER TABLE `%s` CHANGE `%s` `%s` `%s`", $strNomeTabela, $strNomeColunaAtual, $strNomeColunaNova, $strTipo); + break; + + case 'InfraSqlServer': + $strQuery = sprintf("SP_RENAME '%s'.'%s', '%s', 'COLUMN'", $strNomeTabela, $strNomeColunaAtual, $strNomeColunaNova); + + case 'InfraOracle': + $strQuery = sprintf("ALTER TABLE '%s' RENAME COLUMN '%s' TO '%s'", $strNomeTabela, $strNomeColunaAtual, $strNomeColunaNova); + break; + } + + $objInfraBanco->executarSql($strQuery); + } + } /** * Verifica se uma tabela existe no banco diff --git a/rn/PenAtualizarSeiRN.php b/rn/PenAtualizarSeiRN.php index ab85288..6212abd 100644 --- a/rn/PenAtualizarSeiRN.php +++ b/rn/PenAtualizarSeiRN.php @@ -824,12 +824,14 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { $objMetaBanco->adicionarColuna('md_pen_recibo_tramite', 'cadeia_certificado_temp', $strTipo, PenMetaBD::SNULLO); BancoSEI::getInstance()->executarSql("update md_pen_recibo_tramite set cadeia_certificado_temp = cadeia_certificado"); $objMetaBanco->excluirColuna('md_pen_recibo_tramite', 'cadeia_certificado'); - BancoSEI::getInstance()->executarSql("alter table md_pen_recibo_tramite rename column cadeia_certificado_temp to cadeia_certificado"); + $objMetaBanco->renomearColuna('md_pen_recibo_tramite', 'cadeia_certificado_temp', 'cadeia_certificado', $strTipo); + $objMetaBanco->adicionarColuna('md_pen_recibo_tramite_enviado', 'cadeia_certificado_temp', $strTipo, PenMetaBD::SNULLO); BancoSEI::getInstance()->executarSql("update md_pen_recibo_tramite_enviado set cadeia_certificado_temp = cadeia_certificado"); $objMetaBanco->excluirColuna('md_pen_recibo_tramite_enviado', 'cadeia_certificado'); - BancoSEI::getInstance()->executarSql("alter table md_pen_recibo_tramite_enviado rename column cadeia_certificado_temp to cadeia_certificado"); + $objMetaBanco->renomearColuna('md_pen_recibo_tramite_enviado', 'cadeia_certificado_temp', 'cadeia_certificado', $strTipo); + /* ---------- antigo método (instalarV005R003S005IW018) ---------- */ $objBD = new GenericoBD($this->inicializarObjInfraIBanco()); -- libgit2 0.21.2