Ho una colonna varchar
nella tabella per il valore dell'URL. Devo renderlo unico in tutti i casi, in modo insensibile. Ho trovato 2 modi per realizzarlo.Vincolo non sensibile alle maiuscole/minuscole nel database Oracle
Creare un indice univoco sul campo.
create unique index <index_name> on <tablename>(lower(<column_name>))
aggiungere un vincolo unico sul campo come
ALTER TABLE person ADD CONSTRAINT person_name_unique UNIQUE(LOWER(first_name),LOWER(last_name));
Qual è il modo efficace per adottare le scelte di cui sopra?
Questa è una spiegazione abbastanza completa della differenza, senza commentare esplicitamente l'efficienza : http://stackoverflow.com/a/752200/110933 – davek
Un vincolo univoco utilizza un indice univoco sotto il cofano, non c'è differenza tra di essi, l'unica differenza è la sintassi. – krokodilko
Preferirei il vincolo; la differenza è nella semantica. Uno sviluppatore futuro potrebbe considerare il vincolo come una forma di documentazione: "questo deve essere univoco senza distinzione tra maiuscole e minuscole". Un indice univoco, OTOH, potrebbe essere interpretato come meramente creato a fini di prestazioni: "questa colonna sembra essere sempre insensibile alle maiuscole e minuscole" –