Árvore de páginas

Cria um índice para Tabela/View.

Sintaxe

DBCreateIndex( < cName >, < cExprKey >, [ bExprKey ], [ lUnique ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cName

caractere

Indica o nome do arquivo de índice que será criado

X


cExprKey

caractere

Expressão das chaves do índice que será criado na forma de string.

X


bExprKey

bloco de código

Expressão das chaves do índice que será criado na forma executável.



lUnique

lógico

Valor lógico para especificar que o índice será único.



Retorno

Nome

Tipo

Descrição

uRet

nil

Retorno sempre é nulo.

Observações

  • Para a RDD TOPCONN, dado a restrição de alguns SGBDs, o nome do índice deve ser diferente do nome da tabela.
  • Caso exista um arquivo com o mesmo nome, definido no parâmetro <cNome>, ele será excluído e o novo criado. No entanto, são realizados os seguintes passos:
    1. Salva fisicamente as alterações realizadas na tabela corrente.
    2. Fecha todos os arquivos de índice abertos.
    3. Cria o novo índice.
    4. Posiciona o novo índice como ordem corrente.
    5. Posiciona a tabela corrente no primeiro registro do índice.
  • Com exceção do RDD C-Tree, a tabela corrente não precisa estar aberta em modo exclusivo para a criação do índice, pois na criação de índices, no c-tree, é alterada a estrutura da tabela, mas é necessário que a tabela esteja aberta em modo exclusivo.

Exemplos

static function CreateTable()
  TCDelFile('T1')
  TCDelFile('T2')
  TCDelFile('VIEW1')
  
  DBCreate('T1', {{"FIELD_NAME", "C", 10, 0}, ;
                  {"FIELD_TYPE"   , "C", 10, 0}}, 'TOPCONN')
                  
  DBCreate('T2', {{"FIELD_NAME", "C", 10, 0}, ;
                  {"FIELD_TYPE"   , "C", 10, 0}, ;
                  {"FIELD_ID" , "N", 3, 0}}, 'TOPCONN')
                  
  TCViewOne("VIEW1", "T1")
return

user function example()
  Local cT2 := "T2"
  Local cView1 := "VIEW1"
  
  TCLink()
  
  CreateTable()

  // Criação de Indice na Tabela
  DBUseArea(.F., 'TOPCONN', cT2, (cT2), .F., .F.)

  (cT2)->(DBCreateIndex('T2_IND', 'FIELD_NAME', { || 'FIELD_NAME' }))

  IIF(TCCanOpen('T2', 'T2_IND'), CONOUT('TRUE'), CONOUT('FALSE'))   // retorna .T., ou seja, tabela e índice existem
 
  DBCloseArea()
  
  // Criação de Indice na View
  DBUseArea(.F., 'TOPCONN', cView1, (cView1), .F., .F.)

  TCSetVIdx( .T. )
  (cView1)->(DBCreateIndex('VIEW1_IND', 'FIELD_NAME'))
  TCSetVIdx( .F. )

  IIF(TCCanOpen('VIEW1', 'VIEW1_IND'), CONOUT('TRUE'), CONOUT('FALSE'))   // retorna .T., ou seja, view e índice existem
 
  DBCloseArea()
  
  TCUnlink()
return

Abrangência

Esta função está disponível no Application Server - build 7.00.131227A, com data de geração superior a 09/08/2016 e depende de um DBAccess com build superior a 20160402.

Veja também

  • Sem rótulos