Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 7 Próxima »

Altera a estrutura de uma tabela.

Sintaxe

TCAlter( < cTable >, < aEstruturaAtual >, < aEstruturaNova >, [ @nErro ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cTable

caractere

Indica o nome da tabela que será alterada.

X


aEstruturaAtual

vetor

Indica o array que contém as informações dos campos atuais da tabela.

X


aEstruturaNova

vetor

Indica o array que contém a nova estrutura desejada para a tabela.

X


nErro

numérico

Caso ocorra algum erro na alteração da estrutura, o número do erro do DBAccess será retornado através desta variável.


X

Retorno

Nome

Tipo

Descrição

lRet

lógico

Retorna .T. se a alterção for realizada com sucesso, caso contrário, retorna .F.

Observações

Atenção

É responsabilidade do programador passar a estrutura atual corretamente. Caso seja passada uma estrutura diferente da atual, pode haver perda de uma ou mais colunas da tabela.

Alter table online

  • A partir do DBAccess 20.1.1.0 é possível realizar alterações estruturais de forma online, isto é, para inclusão de colunas ou alteração de tamanho de colunas não será necessário acesso exclusivo a tabela, podendo executar a função TCAlter mesmo que a tabela esteja em uso por outra conexão.
  • A partir do DBAccess 21.1.1.0 é possível realizar alterações estruturais de forma online para deleção de colunas e alteração de tipo das colunas, não sendo necessário acesso exclusivo a tabela, podendo executar a função TCAlter mesmo que a tabela esteja em uso por outra conexão.

A função determina internamente as ações a serem tomadas para adequar a estrutura atual para a nova estrutura informada, mantendo os dados na tabela. Nesta operação, dependendo do SGDB em questão, um ou mais índices existentes para a tabela podem ser apagados para que a operação seja completa.

Ao comparar as estruturas, são determinadas originalmente quatro ações para cada campo da estrutura

  • Coluna Inserida ( existe na nova estrutura, mas não existe na estrutura atual )
  • Coluna Eliminada ( existe na estrutura atual, mas não existe na nova estrutura )
  • Coluna Mantida ( existe em ambas as estruturas, com os mesmos atributos tipo e tamanhos )
  • Coluna Alterada ( existe em ambas as estruturas, porém com tipo ou tamanho diferentes )

Atenção

Na mudança de atributos em alteração de campo, a única conversão de tipo suportada é N (numérico) para C (caracter). Caso seja realizada uma conversão de tipo não suportada, todos os dados da coluna em questão serão apagados.

Exemplos

USER FUNCTION ex_TCAlter()
  Local cTableNAme := "TTABLE"
  Local nTopErr := NIL
   
  // conecta com o dbaccess
  nStatus := TCLink("POSTGRES/teste","192.168.189.128")
   
  If nStatus < 0
   UserException("TOPCONN - Falha de conexao ["+str(nStatus,4)+"]")
  Endif
   
  // Array com a antiga estrutura
  aStru := {}
  aadd(aStru,{"CPO01","N",8,0})
  aadd(aStru,{"CPO02","N",10,0})
  aadd(aStru,{"CPO03","D",8,0})
   
  // Cria a tabela para o teste
  DbCreate(cTableName,aStru,"TOPCONN")
  // Array com a nova estrutura
  aNewStru := {}
  aadd(aNewStru,{"CPO01","C",8,0})
  aadd(aNewStru,{"CPO02","N",10,0})
  aadd(aNewStru,{"CPO03","D",8,0})
  
  bRet := TCAlter(cTableNAme,aStru,aNewStru, @ nTopErr)
  If !bRet
   MsgInfo(tcsqlerror(),"Erro no TCAlter!")
  Endif
RETURN

Veja também

  • Sem rótulos