当前位置:  开发笔记 > 程序员 > 正文

如何约束数据库表,以便只有一行可以在列中具有特定值?

如何解决《如何约束数据库表,以便只有一行可以在列中具有特定值?》经验,为你挑选了2个好方法。

使用Oracle,如果列值可以为"是"或"否",是否可以约束表,以便只有一行可以具有"是"值?

我宁愿重新设计表结构,但这是不可能的.

[UDPATE]遗憾的是,此表中不允许使用空值.



1> Tony Andrews..:

使用基于函数的索引:

create unique index only_one_yes on mytable
(case when col='YES' then 'YES' end);

Oracle仅索引不完全为null的键,此处的CASE表达式确保所有"NO"值都更改为空值,因此不会编入索引.



2> yukondude..:

这是一个kludgy hack,但如果列允许NULL,那么你可以使用NULL代替"NO"并像以前一样使用"YES".对该列应用唯一键约束,您将永远不会得到两个"YES"值,但仍然有很多NO.

更新:@Nick Pierpoint:建议添加一个检查约束,以便将列值限制为"YES"和NULL.语法在他的回答中得到了解决.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有