APEX ORACLE How to use one form to insert data into multiple tables

半世苍凉 提交于 2021-02-10 20:51:21

问题


I was wondering if you can help me out with my current problem which is to insert data into multiple tables in my relational database using a single form. I am fairly new to APEX but do have a little bit of background on mysql and php programming. In the past, I normally achieve such task by creating a view of all the columns from different table that I want to populate and using a simple insert commands but doing the same thing in apex gives me and error stating that "ORA-01779: cannot modify a column which maps to a non key-preserved table".


回答1:


In Oracle you can not just update a view which has eg a JOIN clause. Oracle will not map all columns back to the source tables: one table might while the others won't. This isn't an apex problem: if you were to run an update against your view in the db you would get this error just as well.

If you want to have your apex screen remain as transparent as possible, then you may want to consider user an instead-of trigger on the view. You will have to write the correct dml statements in this trigger though in order to ensure your data is pushed through correctly to all tables.
Another option is to use the view only to fetch, and use different processes to push the data to the correct tables. Using data-layer packages might alleviate the use of code stored in apex (eg having a lot of plsql code in apex itself is usually not favored and is rather stored in packages).




回答2:


Create items and get all the items values and use PL/SQL on submit button.

Eg: p1_party_Name, p2_Service_Name

 BEGIN;
 INSERT INTO par VALUES(par_party_uid_seq.nextval,:p1_Party_name);
 INSERT INTO par VALUES(ser_service_uid_seq.nextval,:p2_Service_name);
 END;


来源:https://stackoverflow.com/questions/20883516/apex-oracle-how-to-use-one-form-to-insert-data-into-multiple-tables

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!