"ON UPDATE" scenario never happens in my application. As soft delete is used, "ON DELETE" cascade and restrict scenario never happen as well now. Then, should I just drop foreign key because I have suffered deadlock issue when application is under high concurrent workload.
BTW: My application also validates existence of parent resource if child resource has a reference(foreign key) to it when creating child resource