- Home
- Categorie
- Coding e Sistemistica
- PHP
- Impostare campo come UNIQUE
-
Impostare campo come UNIQUE
Ciao a tutti,
mi sto impratichendo sempre più con le varie funzioni mysql, ma ho un dubbio.Creando un nuovo campo ho notato che tra gli attributi potevo farlo UNIQUE, ovvero con tutti i valori diversi.
Per assegnare questo attributo ad un campo già creato in precedenza come posso fare?
-
Ciao,
la query per assegnare UNIQUE ad un campo di una tabella è:ALTER TABLE tabella ADD UNIQUE ( nome_campo )
Se la colonna ha dati duplicati, il campo non viene modificato.
Alessandro
-
Grazie!
-
Ho provato e mi da errore!
forse non è così che va scritto?:
$connessione = mysql_connect($nome_host,$nome_utente,$pass_utente)or die("Connessione non riuscita: " . mysql_error()); mysql_select_db($nome_database, $connessione) or die("Errore nella selezione del database"); $query = mysql_query("ALTER TABLE ragazzi ADD UNIQUE ( nomeurl );",$connessione); if ($query==FALSE) die("errore nella composizione della query"); mysql_close($connessione);
Inoltre cercando su internet ho trovato questo: link
Dice che questo serve ad aggiungere una nuova colonna e di fare attenzione non ce ne sia una con lo stesso nome, che è proprio il mio caso...
-
Ho provato e mi da errore!
Che errore?Dice che questo serve ad aggiungere una nuova colonna e di fare attenzione non ce ne sia una con lo stesso nome, che è proprio il mio caso...
ADD UNIQUE non aggiunge alcuna colonna, ma un indice unico alla colonna indicata che deve essere presente nella tabella.
-
L' errore è:
errore nella composizione della query
-
Quello è l'errore che visualizzi tu, non quello restituito da MySql.
Per vedere l'errore, modifica così:
[PHP]
if ($query==FALSE) die("errore nella composizione della query: ".mysql_error() );
[/PHP]
-
ecco:
BLOB/TEXT column 'nomeurl' used in key specification without a key length
-
Per i campi BLOB/TEXT mysql puoi utilizzare solo i primi N caratteri per l'indice.
Se non hai particolare necessità di avere un campo di tipo BLOB/TEXT per quel dato, convertilo in un VARCHAR.
Oppure assegna all'indice il valore N di caratteri da utilizzareALTER TABLE ragazzi ADD UNIQUE ( nomeurl( N ) )
Questo però potrebbe creare problemi con l'unicità.
-
Ho provato a convertirlo in VARCHART e quando clicco su salva mi da questo errore: "Questo non è un numero!"
-
I varchar hanno una lunghezza da impostare. Max 255
-
Ok, perfetto ha funzionato, ora il campo è UNIQUE.
Grazie!