如何在Oracle Apex中禁用自动提交?实现按需提交INSERT操作
Oracle Apex实现INSERT后提交/不提交的按钮配置
可以实现这个需求,不需要全局禁用自动提交,针对两个按钮分别配置即可,具体步骤如下:
1. 带COMMIT的按钮配置
- 将按钮类型设置为提交页面
- 这种按钮默认会在执行完关联的PL/SQL操作后自动触发COMMIT;如果你的PL/SQL代码里已经手动添加了
COMMIT;语句(如你提供的第一张图所示),也可以正常工作,不会冲突。
2. 不带COMMIT的按钮配置
有两种常用方式:
方式一:修改提交按钮的提交属性
- 按钮类型仍设为提交页面
- 在按钮的「提交处理」属性中,将「提交后操作」设置为不提交(对应Apex界面中的“Do Not Commit”选项)
- 此时执行完INSERT操作后,事务会保持未提交状态,不会自动COMMIT。
方式二:使用PL/SQL动态内容按钮
- 将按钮类型设置为PL/SQL动态内容
- 在按钮的PL/SQL代码区域编写INSERT语句(如你提供的第二张图所示,无需添加
COMMIT;) - 这种按钮类型默认不会触发Apex的自动提交机制,执行完INSERT后事务处于未提交状态。
注意事项
- 未提交的事务仅在当前会话有效,若用户关闭浏览器、会话超时或执行ROLLBACK操作,未提交的INSERT数据会丢失。
- 不建议全局禁用应用程序的自动提交(在应用程序属性中设置),这会影响其他页面的正常提交行为,针对单个按钮配置更灵活。
内容的提问来源于stack exchange,提问作者Mateo Zambrano
相关产品推荐
相关产品推荐

