Can you please show us what code you have written in your On-Update trigger?
Just thinking through the process, I would expect to see some checks to see which columns have been updated so you can determine whether to create a new record (column 1-15) or update an existing record (column 16). To do this type of thing, you will need to compare the Current Value of the column to the value that was fetched from the database. Unfortunately, Forms does not have a System Variable that records the status of each item like it does the Record, Block or Form status so you have to perform this comparison yourself. Thankfully, Oracle Forms does have a built-in that will help with this; GET_ITEM_PROPERTY('ITEM_NAME', DATABASE_VALUE). The DATABASE_VALUE property returns the value that was originally fetched from the database. Your comparison would look something like:
IF ( :YOUR_BLOCK.YOUR_ITEM1-15 != (Get_Item_Property('YOUR_BLOCK.YOUR_ITEM1-15',DATABASE_VALUE)) THEN --Column value has changed...If Column 1-15, insert a new record --If Column 16, Udpated existing record... END IF;
This is a very simplistic example, but hopefully it will demonstrate what you need to do. After that, it is simply writting the DML to INSERT or UPDATE the appropriate record.