Se tu hai realmente l' esigenza di fare una cosa del genere e sei in un caso in cui il db lo usi solo tu a bocce ferme, i casi sono due:
1° trovi il modo di eseguire l' update al contrario partendo dall' ultimo (io pero' non ho mai provato)
2° fai due query di update, la prima inserendo tutta una serie di valori non ancora utilizzati, la seconda per riprendere quei valori e riportarli a id+1

per farti un esempio del secondo caso potresti fare la prima query cosi':
UPDATE tab1 SET id = -id WHERE id>=2

e la seconda cosi':
UPDATE tab1 SET id = -id+1 WHERE id<0


ho verificato che il campo generato da mysql come chiave primaria autoincrementata accetta anche valori negativi ( che sicuramente non vanno in conflitto con quelli autogenerati a salire partendo da 1 )

Se invece le bocce non sono ferme devi per forza fare una query unica partendo dall' ultimo per evitare che qualcuno inserisca dei dati mentre fai i due update

Ciauz