Forcing Flag To Be Unique In Drupal 7
Drupal Rules has a Trim-A-Flag action that lets you set a 'queue' size, or a 'max' number of flags allowed.  If you set the queue to 1, you can force a flag to be unique, and have it automatically update when a new entity is flagged.

Screenshot below.