Leo esto en un manual de VFP:
Los índices principales aseguran que sólo se introducen valores únicos en un campo y
determinan el orden en el que se procesan los registros. Puede crear un índice principal para
cada tabla si la tabla está incluida en la base de datos. Si la tabla ya tiene un índice principal,
agregue un índice candidato. Este índice es el que define el campo clave.
Los índices candidatos también imponen valores únicos y determinan en qué orden se
procesan los registros, como un índice primario. Puede tener varios índices candidatos por
tabla en bases de datos y en tablas libres.
Los índices normales determinan el orden en que se procesan los registros pero permite que se
introduzcan valores duplicados en un campo. Puede agregar más de un índice normal a una
tabla. Es muy útil ya la mayoría del tipo índices normales.
La ayuda de VFP indica esta sintaxis:
INDEX ON eExpression TO IDXFileName | TAG TagName [BINARY]
[COLLATE cCollateSequence] [OF CDXFileName] [FOR lExpression]
[COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]
El ejemplo que trae la ayuda dice:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\TestData')
USE Customer
INDEX ON company TAG company
INDEX ON address TAG address
CLEAR
DISPLAY STATUS
Leo en la web que no se pueden crear indices principales via código. Es eso cierto?..
Porque en la ayuda en el tema:How to: Create Indexes (Visual FoxPro) trae estos ejemplos:
ALTER TABLE Customer ADD PRIMARY KEY Cust_ID TAG Cust_ID
ALTER TABLE Customer ALTER COLUMN Cust_ID c(5) PRIMARY KEY
¿Entonces si se puede crear un índice principal via código o no?
Entiendo que el principal solo puede haber uno y los candidatos muchos y solo aceptan valores que no se repitan. ¿Es así?
Mientras que el "indice normal" si acepta duplicados.
Al hacer el típico INDEX ON company TAG company que hacemos todos, cuál de esos tres índices se creó?.. Principal, candidato o normal?..
Pueden poner un ejemplo de cómo crear los 3 ?