dbindex:==keyfield
<element>
<keyfield>
Questo elemento ti consente di definire un indice collegato a una tabella.
È possibile definire diversi indici. Un indice può fare riferimento a uno o più campi della tabella. La dichiarazione dell’indice segue in genere la definizione dell’elemento dello schema principale.
L’ordine del <keyfield>
elementi definiti in un <dbindex>
è molto importante. Il primo <keyfield>
deve essere il criterio di indicizzazione su cui si basano principalmente le query.
Il nome dell'indice nel database viene calcolato concatenando il nome della tabella e il nome dell'indice. Ad esempio: nome della tabella "Sample", spazio dei nomi "Cus", nome dell’indice "MyIndex"-> nome del campo dell’indice durante la creazione dell’indice query: "CusSample_myIndex".
_operation (stringa): definisce il tipo di scrittura nel database.
Questo attributo viene utilizzato principalmente quando si estendono schemi predefiniti.
I valori accessibili sono:
applyIf (stringa): condizione per tenere conto dell’indice - riceve un’espressione XTK.
etichetta (stringa): etichetta di indice.
nome (MNTOKEN): nome di indice univoco.
univoco (booleano): se questa opzione è attivata (@unique="true"), l’attributo garantisce l’univocità dell’indice in tutti i suoi campi.
Creazione di un indice sul campo "id". (l’attributo "@unique" sul <dbindex>
L'elemento attiva l'aggiunta della parola chiave SQL "UNIQUE" quando l'indice viene creato nel database (query).
<element label="Sample" name="Sample">
<dbindex name="myIndex" label="My index on the ID field" unique="true" applicableIf="HasPackage('nms:social')">
<keyfield xpath="@id"/>
</dbindex>
<attribute name="id" type="long"/>
</element>
ALTER TABLE CusSample ADD iSampleId INTEGER;
UPDATE CusSample SET iSampleId = 0;
ALTER TABLE CusSample ALTER COLUMN iSampleId SET Default 0;
ALTER TABLE CusSample ALTER COLUMN iSampleId SET NOT NULL;
CREATE UNIQUE INDEX CusSample_myIndex ON CusSample(iSampleId);
Creazione di un indice composito sui campi "@mail" e "@phoneNumber":
<element label="NewSchemaUser" name="NewSchemaUser">
<dbindex name="myIndex" label="My composite index">
<keyfield xpath="@email"/>
<keyfield xpath="@phone"/>
</dbindex>
<attribute name="email" type="string"/>
<attribute name="phone" type="string"/>
</element>
CREATE INDEX DocNewSchemaUser_myIndex ON DocNewSchemaUser(sEmail, sPhone);