ho bisogno di inserire due autoincrement indipendenti in una tabella mysql, è possibile? come si fà?
devo mettere i campi ID autoincrement ed un campo pratica che si autoincrementi.
grazie Luigi
ho bisogno di inserire due autoincrement indipendenti in una tabella mysql, è possibile? come si fà?
devo mettere i campi ID autoincrement ed un campo pratica che si autoincrementi.
grazie Luigi
"indipendenti" che vuol dire?
L'attributo AUTO_INCREMENT è usato per generare un identificatore UNICO per una nuova riga.
Se non ricordo male non ne puoi mettere due in una tabella.
E poi il campo pratica che formato ha? E' solo un intero? Usa lo stesso valore del campo ID
è possibile inserirne uno solo, ma se ti serve "simularlo" puoi fare
detto questo, maggiore attenzione ai titolo e soprattutto al regolamento! Va indicata la piattaforma con la quale si sta lavorando!codice:INSERT INTO tabella ( id1, /** campo autoincrement **/ id2 ) VALUES ( NULL, /** forzo la generazione di un nuovo valore **/ (SELECT MAX(tbl.id2) FROM tabella AS tbl) )
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
così non c'è garanzia che non vi siano stati nuovi inserimenti.Originariamente inviato da daniele_dll
è possibile inserirne uno solo, ma se ti serve "simularlo" puoi fare
detto questo, maggiore attenzione ai titolo e soprattutto al regolamento! Va indicata la piattaforma con la quale si sta lavorando!codice:INSERT INTO tabella ( id1, /** campo autoincrement **/ id2 ) VALUES ( NULL, /** forzo la generazione di un nuovo valore **/ (SELECT MAX(tbl.id2) FROM tabella AS tbl) )
Il metodo "pulito" è creare un trigger che, dopo aver inserito la riga, prenda l'ultimo SER ed aggiorni di conseguenza la tabella2
non c'è garanzia nemmeno con il trigger (non ne uso, ma non credo facciano un lock in auto della tabella ... oppure si?)
l'unico modo per avere una garanzia cerca è loccare la tabella
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
ne convengo.Originariamente inviato da daniele_dll
non c'è garanzia nemmeno con il trigger (non ne uso, ma non credo facciano un lock in auto della tabella ... oppure si?)
l'unico modo per avere una garanzia cerca è loccare la tabella
Ma mi pare che la richiesta di luigi45 sia ancora diversa, non vuole "lo stesso" valore ma due valori autoincrementanti e indipendenti tra loro e quindi con sequenze di incremento anche, anzi, sicuramente diverse.
Altrimenti sarebbe solo un campo duplicato senza senso.
Forse potrebbe risolvere con un indice auto increment su due campi. Ma non dice a che gli serve.
@ Luigi45 -> http://dev.mysql.com/doc/refman/5.0/...increment.html
in questo caso avresti un autoincrement nome-id dove l'incremento avviene selettivo, nome per nome.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
c'è garanzia, se riprendi l'ultimo ser che è stato inserito con la relativa funzione mysql LAST_INSERT_ID(), in quanto è riferito alla connessione mysql (client)Originariamente inviato da daniele_dll
non c'è garanzia nemmeno con il trigger (non ne uso, ma non credo facciano un lock in auto della tabella ... oppure si?)
l'unico modo per avere una garanzia cerca è loccare la tabella
Using LAST_INSERT_ID() and AUTO_INCREMENT columns simultaneously from multiple clients is perfectly valid. Each client will receive the last inserted ID for the last statement that client executed.
altrimenti no, non c'è garanzia.
---
Riguardo al perchè avere due campi autoincrementanti nella stessa tabella... non so, per me uno è già troppo![]()
avere due valori autoincremente ASSOLUTAMENTE identici non ha ne senso ne utilità e non credo chiedesse questo ... lui chiedeva come avere un secondo campo che si incrementasse da solo e, anche se non ha dato ulteriori dettagli, ci sono poche cose a cui può servire e, tra tutte, a mantenere un progressivo in certi contesti.Originariamente inviato da franzauker
c'è garanzia, se riprendi l'ultimo ser che è stato inserito con la relativa funzione mysql LAST_INSERT_ID(), in quanto è riferito alla connessione mysql (client)
Using LAST_INSERT_ID() and AUTO_INCREMENT columns simultaneously from multiple clients is perfectly valid. Each client will receive the last inserted ID for the last statement that client executed.
se ad esempio hai una data informazione e vuoi tenere lo storico nella tabella, assegni un progressivo ad ogni record e, quindi, ti serve un secondo "autoincrement".
se alla query che ho postato ci metti un where hai un progressivo che dipende da N fattori ovvero dall'informazione stessa
poi, se da qualche dettaglio ulteriore sarebbe cosa ottima, ma .....
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
in ogni caso, si può avere un solo campo AUTO_INCREMENT ed esso deve necessariamente essere una chiave primaria...