问两个关于EXCEPTION的问题

[复制链接]
查看11 | 回复5 | 2017-2-22 15:16:26 | 显示全部楼层 |阅读模式
第一个问题,有表A和表B,B通过外键外键关联A,当我对表A作删除操作的时候,能否这样写
begin
delete from A where ...;
exception when 有子记录存在
then ....
ORACLE里面有没有这样定义的EXPCEPTION?有的话是哪个?
第二个问题,对表A做插入操作,表A有某unique约束
是否存在exception when 违反XX唯一性约束
可能问题比较菜,大家别笑啊。如果不能这样做的话,是不是一定要在操作前作相关的查询动作,然后根据结果设定返回值?
回复

使用道具 举报

千问 | 2017-2-22 15:16:26 | 显示全部楼层
dup_val_on_index 
唯一索引的异常
外键的不知道 可以自定义一个
回复

使用道具 举报

千问 | 2017-2-22 15:16:26 | 显示全部楼层
原帖由 starfifi 于 2009-10-21 15:48 发表
  dup_val_on_index 
唯一索引的异常
外键的不知道 可以自定义一个

dup_val_on_index这个是不是只要违反该表下的任意一个唯一约束,都补捉了。
如果表有几个唯一性约束,能否具体捕捉某一个违反约束的异常?这样的话方便设定返回值。
回复

使用道具 举报

千问 | 2017-2-22 15:16:26 | 显示全部楼层
具体的错误信息在sqlerrm里面有错误详细信息
不过要自己截取sqlerrm里面的信息
回复

使用道具 举报

千问 | 2017-2-22 15:16:26 | 显示全部楼层
这个需求很怪异!
回复

使用道具 举报

千问 | 2017-2-22 15:16:26 | 显示全部楼层
ORACLE没有预定义的“有子记录存在”异常,得自己从SQLCODE判断。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行