想咨询一个关于oracle检查约束与唯一约束联用的问题

yymummy 2014-08-19 04:14:57
我想写一个约束,当有一列值为1的时候,我想检查这些列为1的数据中的另一列是否唯一,这个约束应该怎么写呢?

比如:
主键Id 外键Id 标识符
1 1 0
2 2 0
3 2 0
4 3 1
5 3 1

比如上面的五条数据,前四条都是合法的,但是第五条不合法,原因是 标识符=1 的时候,外键Id不能重复,这样的约束该怎么写呀?
不知道能不能写出这样的约束呢?还是我得通过其他方式来实现呀?

这个问题我不知道通过什么关键字来找,找了好久都没有关于这个的解答,在此咨询一下各位巨巨~谢谢啦~
...全文
119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yymummy 2014-08-19
  • 打赏
  • 举报
回复
哦,好的,那是我想多了~谢谢两位啦~版主大大应该不缺分了吧~XD~
bw555 2014-08-19
  • 打赏
  • 举报
回复
oracle有以下5中约束 A、not null(非空) B、unique(唯一) C、primary key(主键) D、foreign key(外键) E、check 但是这5种约束都是针对单一字段的,你这种用约束应该是解决不了了
CT_LXL 2014-08-19
  • 打赏
  • 举报
回复
引用 楼主 yymummy 的回复:
我想写一个约束,当有一列值为1的时候,我想检查这些列为1的数据中的另一列是否唯一,这个约束应该怎么写呢? 比如: 主键Id 外键Id 标识符 1 1 0 2 2 0 3 2 0 4 3 1 5 3 1 比如上面的五条数据,前四条都是合法的,但是第五条不合法,原因是 标识符=1 的时候,外键Id不能重复,这样的约束该怎么写呀? 不知道能不能写出这样的约束呢?还是我得通过其他方式来实现呀? 这个问题我不知道通过什么关键字来找,找了好久都没有关于这个的解答,在此咨询一下各位巨巨~谢谢啦~
带逻辑的check用trigger来实现吧
yymummy 2014-08-19
  • 打赏
  • 举报
回复
引用 1 楼 bw555 的回复:
1、可以考虑用表的触发器来实现 2、可以考虑在应用程序中处理
那也就是说,用基本的约束,是实现不了这种判断的是吗?
bw555 2014-08-19
  • 打赏
  • 举报
回复
1、可以考虑用表的触发器来实现 2、可以考虑在应用程序中处理

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧