Basically you want to keep only current row versions in sync with lookup cache. Once new row is processed, it goes to Lookup cache and the target table:
Lookup cache | DB Table
Key Active Description | Key Active Description
-------------------------------------------------------------------
AA1 1 The Moon AA1 1 The Moon
Now if we get a row with the same key, but description updated:
Lookup cache | DB Table
Key Active Description | Key Active Description
-------------------------------------------------------------------
AA1 1 The Sun AA1 1 The Sun
AA1 0 The Moon
Lookup cache will be updated, we insert new row to target table and mark existing row as inactive. Now if you compare active rows, lookup cache is in sync with DB.