by instead of trigger I presume you are refering to a database instead-of-trigger on the view.
It has been some time since I have travelded this specific road withs forms, however, I seem to recall a few things are needed to make dml against a complex view with instead of triggers a reality. There should be no need to write an on-update trigger in your form. Indeed, the reason for a view and instead-of-trigger on that view is so that you do not require additional coding in your form.
1) you need the instead-of-trigger on the view (confirm it is there)
2) you need to change the locking mode in the form for the block based on your view so that it uses the logical key for locking purposes. There is a lock mode setting somewhere in the block properties page, find it, understand the differences and pick the righ tone (I forget at this moment which on it is, try them all if necessary).
3) #2 will involve selecting those fields that map to the business identifier/primary key you want to you use for finding rows. You need to visit each field’s property page and set the appropriate attribute to indicate that is is part of the key used to find rows. It is there on the properties page but not having forms available at the moment I cannot give you the property name. You will have to do a little exploring to find it.
If you do these things, the error should go away and the view become updatable via oracle forms without the need to write any on-update trigger.
Do some testing at the database level first. Make sure you can update the view directly via sqlplus first with the instead-of-trigger before you attempt it in the form. This will ensure that your issue is forms related and not database related. This is an important step because the database will return a similar error to what you have reported if the instead-of-trigger does not exist on the view.
Good luck, Kevin