Originally posted by KAndrew:
Hi!
If view has DISTINCT, GROUP BY, UNION clause and join several tables all update logic release in instead of trigger, so ROWID cached updates works only with one updating table. I must specify UpdatingTable for CashedUpdates and DOA produce this statements:
DOA DMLQuery
1) select * from UpdatingTable where rowid = :doa__rowid
2) savepoint DOA_APPLYPOINT
3) select * from UpdatingTable where rowid = :doa__rowid for update nowait
4) update UpdatingTable set FieldName = :FieldName where rowid = :doa__rowid
5) commit;
If UpdatingTable is complex view then Oracle raise ORA-01446.
If UpdatingTable is one of the view's table,
I can update only one, instead of triggers not fired.
With unique fields
select * from UpdatingTable where UniqueFieldName1 = :UniqueFieldName1
[and
UniqueFieldName2 = :UniqueFieldName2
..]
and so on..
This statements solve the problem.
This would be a great feature!
Regards,
Andrew.