Hey Doru,
I use surrogate keys (keys that have no value other than as a key) almost exclusively for the very reason that what should have been a *rare* occurance happened often. The most obvious example is a data entry error. Somebody types something in the wrong way, saves and then realizes the mistake. No it's call the programmer or add the functionality to deal with it.
Yes, you can use cascades to update the key but why?? There's almost no benefit while the chance that something will happen leaving you with an orphaned is very real. As Ed Rauh just reminded me KISS (Keep It Simple, Stupid).