Originariamente inviato da brucomela
scusa se ho scritto id della riga, intendevo codice identificativo del prodotto (non è la chiave della tabella).

Però il problema rimane, non è il problema che il prodotto 200899 scala di uno se ne cancello uno precedentemente creato (quel codice non cambierà, se no che codice identificativo sarebbe!), il problema invece è che quando cancello il 200833, i record da 99 tornano a essere 98, e con il tuo metodo il nuovo inserito avrà ancora codice identificativo 200899 (che esiste già).

In pratica il conteggio dei record non è affidabile perchè genera facilmente dei duplicati (se capisco male correggimi!)

ahhhhh ok, ho frainteso io, hai ragione te...
Codice PHP:
$q mysql_query("SELECT MAX(codice) FROM nome_tabella WHERE codice LIKE '$anno%' GROUP BY id");
list(
$codice)=mysql_fetch_array($q);
$codice++;
//poi fai tutti i controlli del caso..