Originariamente inviato da LoRdCoStE
Salve a tutti, durante la progettazione di un modulo fatturazione per un CMS mi sono trovato ad affrontare il problema delle fatture, in particolare della loro numerazione:
  • Numero univoco
  • Azzeramento della numerazione a fine anno
  • Problemi di concorrenza


Infine un ultimo metodo che a me sembra più elegante (e funzionante), utilizzo una chiave primaria composta da (anno,numero) dove numero è auto_increment.
Codice PHP:
CREATE TABLE fatture (
    
anno INT(4NOT NULL,
    
numero INT(10NOT NULL AUTO_INCREMENT,
    
totale DECIMAL(8,2NOT NULL,
    
PRIMARY KEY (anno,numero)
ENGINE=MyISAM;

INSERT INTO `fatture` (
`
anno` ,
`
numero` ,
`
emissione` ,
`
totale`
)
VALUES (
'2010'NULL '2010-09-56''101.00'
);


INSERT INTO `fatture` (
`
anno` ,
`
numero` ,
`
emissione` ,
`
totale`
)
VALUES (
'2010'NULL '2010-09-16''101.00'
);


INSERT INTO `fatture` (
`
anno` ,
`
numero` ,
`
emissione` ,
`
totale`
)
VALUES (
'2011'NULL '2011-01-01''103.00'
); 
Il risultato finale è il seguente:
codice:
2010 	1 	2010-09-15 	100.00
2010 	2 	2010-09-16 	101.00
2011 	1 	2011-01-01 	103.00
Secondo voi quale di queste soluzioni è la migliore? Ne conoscete altre?
Fatemi sapere cosa ne pensate, in particolare dell'ultima.
Se la key è su due valori, al cambio del primo l'auto increment si azzera da solo??