As already requested to you:
read OraFAQ Forum Guide, especially "How to format your post?" section.
Make sure that lines of code do not exceed 80 characters when you format.
Indent the code (See SQL Formatter) and align the columns in result.Use the "Preview Message" button to verify.
Also always post your Oracle version (4 decimals).

Use SQL*Plus and post what you tried.

Regards
Michel

In addtion, Post a Test case: create table and insert statements along with the result you want with these data.

Please define "automatically". Does it mean, that when row with DATA_VALUE=38 is added, all rows with DATA_VALUE>38 shall have PRODUCT_ID incremented?
Then you are going to have a lot of trouble, as it will take a lot of time (as adding one row with smallest DATE_VALUE will lead to update of all table rows). It will also be necessary to lock the table (so multiple users will be unable to work with that table concurrently).

As desired PRODUCT_ID may be easily derived using ROW_NUMBER analytic function, there is no need to store it in the table. Create a (materialized) view to get this value, if you do not want to specify it directly in the query.