如何解决Oracle强制实施唯一性
我需要对表(约1000万行)中的特定数据实施唯一性。此示例数据说明了规则- 对于代码= X,部件号不能重复。对于任何其他代码,可以有重复的部件号。例如ID 8行不能在那儿,但ID 6行就可以了。表和部件号中有几种不同的代码,但是仅对于一个代码= X才需要唯一性。
ID CODE PART#
1 A R0P98
2 X R9P01
3 A R0P98
4 A R0P44
5 X R0P44
6 A R0P98
7 X T0P66
8 X T0P66
我看到的唯一方法是在插入或更新之前在表上创建触发器并检查代码= X的PART#。但是,我担心此解决方案可能会减慢对该表的插入和更新。
感谢您的帮助!
解决方法
在Oracle中,您可以为此在表达式上创建唯一索引:
create unique index myidx
on mytable (case when code = 'X' then part# end);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。