with UR, basically you can select un-committed rows, not duplicates.
Sometimes while inserting it throws -803,and sometime it runs fine.
Sometimes its throwing -803, because what you are trying to insert is considered as duplicate.
Sometimes it runs fine, because it is the first of its kind .
Tell us your column details and also let us know, how you are making that column unique like is it an identity column, does it reference any sequence object or you have a mechainsm in the program to make it unique.
I don't think a select being used for insert is ever correlated.
How can you predict? you might be able to test with exists or something.
And what has this to do with updates while selecting UR? you'll need to explain that a bit in detail.