HASHEDVALUE funzione scalare
La funzione HASHEDVALUE restituisce l'indice della mappa di distribuzione della riga ottenuta applicando la funzione di partizionamento sul valore chiave di distribuzione della riga.
Lo schema è SYSIBM.
- Nome colonna
- Il nome qualificato o squalificato di una colonna in una tabella. La colonna può avere qualsiasi tipo di dato.
Se la colonna è una colonna di una vista, l'espressione nella vista per la colonna deve far riferimento ad una colonna della tabella base sottostante e la vista deve essere deletata. Un'espressione di tabella nidificata o comune segue le stesse regole di una vista.
Un'applicazione di esempio per questa funzione si trova in una clausola SELECT, dove restituisce l'indice della mappa di distribuzione per ogni riga della tabella utilizzata per formare il risultato dell'istruzione SELECT.
L'indice della mappa di distribuzione restituito sulle variabili di transizione e sulle tabelle deriva dagli attuali valori di transizione delle colonne chiave di distribuzione. Ad esempio, in un trigger di prima inserimento, la funzione restituirà l'indice di mappa di distribuzione proiettato considerando i valori correnti delle nuove variabili di transizione. Tuttavia, i valori delle colonne chiave di distribuzione possono essere modificati da una successiva prima di inserire trigger. Così, l'indice della mappa finale della distribuzione della riga quando viene inserito nella banca dati può differire dal valore proiettato.
La riga specifica (e la tabella) per cui l'indice della mappa di distribuzione viene restituito dalla funzione HASHEDVALUE viene determinato dal contesto dell'istruzione SQL che utilizza la funzione.
Risultato
Il tipo di dati del risultato è INTERO nell'intervallo da 0 a 32767. Per una tabella senza chiave di distribuzione, il risultato è sempre 0. Un valore nullo non viene mai restituito. Dal momento che le informazioni di livello di riga vengono restituite, i risultati sono gli stessi, indipendentemente da quale colonna viene specificata per la tabella.
Note
- La funzione HASHEDVALUE non può essere utilizzata su tabelle replicate, all'interno dei vincoli di controllo o nella definizione delle colonne generate (SQLSTATE 42881).
- La funzione HASHEDVALUE non può essere utilizzata come funzione di origine quando si crea una funzione definita dall'utente. Poiché accetta qualsiasi tipo di dato come argomento, non è necessario creare firme aggiuntive per supportare tipi distinti definiti dall'utente.
- La funzione HASHEDVALUE non può essere utilizzata come parte di una chiave di espressione in un'istruzione CREATE INDEX.
- Le alternative di sintassi: Per la compatibilità con le versioni precedenti dei prodotti Db2® , il nome funzione PARTITION è un sinonimo di HASHEDVALUE.
Esempi
- Esempio 1: elencare i numeri dei dipendenti (EMPNO) dalla tabella EMPLOYEE per tutte le righe con un indice di mappa di distribuzione di 100.
SELECT EMPNO FROM EMPLOYEE WHERE HASHEDVALUE(PHONENO) = 100 - Esempio 2: Accedi il numero del dipendente e l'indice di mappa di distribuzione proiettato della nuova riga in una tabella chiamata EMPINSERTLOG2 per qualsiasi inserimento dei dipendenti creando un precedente trigger sulla tabella EMPLOYEE.
CREATE TRIGGER EMPINSLOGTRIG2 BEFORE INSERT ON EMPLOYEE REFERENCING NEW AW NEWTABLE FOR EACH ROW INSERT INTO EMPINSERTLOG2 VALUES(NEWTABLE.EMPNO, HASHEDVALUE(NEWTABLE.EMPNO))
