在一个过程中,我将值插入到不同的表中,无论何时发生表的唯一/主键违例时,我都想专门处理该表的异常。我如何捕获不同的重复值异常?Oracle plsql捕获异常
3
A
回答
7
查看一些教程,如this。
您的唯一/主键违规将是DUP_VAL_ON_INDEX
例外。
0
当你创建你的表时,你应该创建一个TRIGGER和一个SEQUENCE在你的表上运行Before Insert,并捕获如果:NEW.PRIMAY_KEY为null,然后从序列中获取它。
使用此方法,您将始终避免DUP_VAL_ON_INDEX。
我会避免使用WHEN OTHERS,因为这在实际的错误处理逻辑中没有真正的用处。
相关问题
- 1. 捕获异常
- 2. 异常捕获
- 3. 捕获异常
- 4. 捕获异常
- 5. 捕获SQLAlchemy异常
- 6. 捕获iframe异常
- 7. jvm异常捕获
- 8. JNA捕获异常
- 9. JUnit异常捕获
- 10. 捕获空异常
- 11. 捕获异步lambda异常
- 12. 将捕获异常捕获该异常的父类
- 13. 捕获块没有捕获异常
- 14. 如何在异常中捕获异常?
- 15. PLSQL中的异常处理
- 16. 回滚在PLSQL异常
- 17. 编译/捕获异常
- 18. 在Java中捕获异常
- 19. 从Xalan捕获异常
- 20. 捕获异常/错误
- 21. 在JSP中捕获异常
- 22. 用Python捕获sshtunnel异常
- 23. SMTP异常被捕获
- 24. 异常未被捕获
- 25. 在Async.Start中捕获异常?
- 26. 如何捕获substr异常?
- 27. 未捕获的异常“NSFileHandleOperationException”
- 28. F#Async.FromBeginEnd不捕获异常
- 29. 仅捕获超时异常
- 30. HighCharts未捕获的异常
嗯,但我怎么知道从哪个表插入它被抛出? – Rnet
然后你可能必须用这样一个异常块来包装你的每一条语句,或者你自己设置一个标记,以便你知道哪一个是最后一次成功的插入。 –
嗯,这将是主键违规,但我可以处理外键错误不同? – Rnet