Take a look at this MS Support article. It's not
exactly the same as your situation, but it looks like it's related to what you are experiencing.
BUG: Reverting to OLDVAL() Causes Error with Table Buffering>Hi all,
>
>I have a problem with candidate index.
>I turn table buffering on at my table with a candidate index NAME on field NAME. If I insert name into the new record by using Insert Into command and then I replace NAME field with the same value which this field already has have, I got "Index NAME is violated." message on table update.
>
>Can you help me with this (I now test whether the new value already exists in field NAME and it is not a fine solution)
>
>Thanks,
>Petr Valach
kenweber
GCom2 Solutions
Microsoft Certified Professional