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:
- Salva fisicamente as alterações realizadas na tabela corrente.
- Fecha todos os arquivos de índice abertos.
- Cria o novo índice.
- Posiciona o novo índice como ordem corrente.
- 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
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas