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