Si comporta così perchè effettivamente fa un confronto con lo "stato" precendete, non con tutti gli altri.
ES:
TAB A:
ID:1 - CAMPO1:AAA - CAMPO2:BBB (stato 2 - corrente)
TAB B:
ID:1 - CAMPO1:AAB - CAMPO2:BBC (Stato 0 - iniziale)
ID:1 - CAMPO1:AAB - CAMPO2:BBB (Stato 1 - prima modifica)
Il codice confronta lo stato2 con quello 1,non con quello 0. Quindi è cambiato CAMPO1, CAMPO2 è rimasto lo stesso dal precendete stato.
Quindi la dimanda è: come vuoi fare il confronto del nuovo stato? Vuoi chidere se è mai stato modificato, se differisce da quando è stato inserito o cosa?
Devi specificare meglio quello che devi fare e la situazione in cui ti trovi altrimenti è difficile darti una mano