加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – 按照列值建设多列束缚

发布时间:2021-01-22 02:29:44 所属栏目:站长百科 来源:网络整理
导读:我正在实行在oracle数据库上建设一个束缚,该束缚声名如下: 假如column1 == someValue,则column2和column3的组合必需对付column1 == someValue的全部条目都是独一的 我认识unique和check束缚的观念,而且我实行用这些布局表达束缚.可是,我好像找不到包括前提

我正在实行在oracle数据库上建设一个束缚,该束缚声名如下:

假如column1 == someValue,则column2和column3的组合必需对付column1 == someValue的全部条目都是独一的

我认识unique和check束缚的观念,而且我实行用这些布局表达束缚.可是,我好像找不到包括前提的要领.这就是为什么我想知道它是否也许.

我想要建设束缚的表是由Hibernate映射以下类条理布局建设的(为简捷起见,省略了大大都属性):

class MyClass {
     String name;
     MyClass parent;
}

class MySubClass extends MyClass {
     String businessValue;
}

行使单个表计策映射类,并为每种范例行使差异的辨别器值.客户要求对付MySubClass的全部实例,name和parent的组合必需是独一的(column1将是辨别器值).通过表束缚在父类上逼迫执行这样的束缚会很轻易.可是,该束缚必需仅合用于MySubClass.

在行使Hibernate Validator等框架将数据输入数据库之前,可以验证数据.但因为验证无论怎样都必要数据库会见,因此数据库束缚好像是更节减机能的要领.

办理要领

你不能用束缚来做到这一点,但你可以行使像这样的 “function-based index”(FBI)来做到这一点:

create unique index mytable_idx on mytable
   ( case when column1 = 'somevalue' then column2 end,case when column1 = 'somevalue' then column3 end
   );

这仅为column1 =’somevalue’的行建设独一索引条目,因此其他行可以包括一再项,但这些不能.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读