G-1060: Avoid storing ROWIDs or UROWIDs in database tables.
Major
Reliability
Reason
It is an extremely dangerous practice to store ROWIDs in a table, except for some very limited scenarios of runtime duration. Any manually explicit or system generated implicit table reorganization will reassign the row's ROWID and break the data consistency.
Instead of using ROWID for later reference to the original row one should use the primary key column(s).
Example (bad)
1 2 3 4 5 6 7 8 9 10 11 12 | begin insert into employee_log (employee_id ,last_name ,first_name ,rid) select employee_id ,last_name ,first_name ,rowid from employee; end; / |
Example (good)
1 2 3 4 5 6 7 8 9 10 | begin insert into employee_log (employee_id ,last_name ,first_name) select employee_id ,last_name ,first_name from employee; end; / |