ragazzi c'è un modo per dire a mysql di usare gli spazi id vuoti quando inserisce un nuovo record nel caso il campo int primary abbia raggiunto il suo limite del range?
grazie
ragazzi c'è un modo per dire a mysql di usare gli spazi id vuoti quando inserisce un nuovo record nel caso il campo int primary abbia raggiunto il suo limite del range?
grazie
E' una pessima idea. Se non ti basta un campo di tipo int usa bigint.
Originariamente inviato da nicola75ss
E' una pessima idea. Se non ti basta un campo di tipo int usa bigint.
no perchè a me quel campo id non serve a nulla... perchè ogni 1-2 giorni la tabella viene quasi completamente svuotata per analizzare i dati e inserirli in maniera aggregata in un'altra tabella.
quindi con il passsare del tmepo si formerà un buco gigante all'inizio con i record che partono dall'id 300.000 ecc
E allora fai semplicemente una insert into select per travasare i dati da una tabella all'altra.![]()
Originariamente inviato da nicola75ss
E allora fai semplicemente una insert into select per travasare i dati da una tabella all'altra.![]()
no perchè non devo semplicmente travasare ma i dati devono essere elaborati e poi inseriti in una nuova tabella
ma questo non è il punto il fatto è che quando svuoto la tabella di prima si forma quel buco degli id che potrebbe essere riutilizzato se l'auto_increment in qualche modo lo prevedesse..
al massimo visto che sto campo id non lo uso proprio lo elimino del tutto, però poi avrei una tabella senza il campo primary...
Non capisco perchè abbiate questa fissa dei buchi degli id.
L'id è solo un identificativo univoco dei record. Qualsiasi escamotage per "riempire i buchi" è del tutto inutile e fuori luogo.
Per avere degli id contigui ti basta fare quanto scritto sopra, una insert into select in una nuova tabella in cui passi tutti i campi tranne la chiave primaria. Nella nuova tabella i record avranno tutti numeri progressivi. Puoi anche ricorrere a una tabella temporanea
codice:create temporary table tabella select * from originale; truncate originale; insert into originale (elenco_campi_tranne_id) select elenco_campi_tranne_id from tabella
no forse non ci siamo spiegatiOriginariamente inviato da nicola75ss
Non capisco perchè abbiate questa fissa dei buchi degli id.
L'id è solo un identificativo univoco dei record. Qualsiasi escamotage per "riempire i buchi" è del tutto inutile e fuori luogo.
Per avere degli id contigui ti basta fare quanto scritto sopra, una insert into select in una nuova tabella in cui passi tutti i campi tranne la chiave primaria. Nella nuova tabella i record avranno tutti numeri progressivi. Puoi anche ricorrere a una tabella temporaneaa me le tabelle servono tutte e 2...
la prima contiene i dati a cascata non elaborati la seconda i dati dopo alcune elaborazioni..
visto che nella prima vengono fatti molti inserimenti fra un pò raggiungerò il limtie dell int id...
perciò mi chiedevo se potevo riutilizzare gli id disponibili
Ti ho già risposto. Se non ti bastano 4 miliardi e passa di id disponibili con un campo di tipo int usa un campo bigint.
Se la tabella è oggetto di cancellazioni frequenti ti basta lanciare un optimize table per ottimizzarla. Punto.
vabè il campo bigint dovrebbe essere abbastanza sufficiente da durare un bel pò di anni...
il problema è che prima o poi il range verrà comunque esaurito....
Il valore massimo di un campo bigint è
18446744073709551615
io non riesco nemmeno a leggerlo.![]()