oracle – 根据列值创建多列约束
我正在实行在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’的行建设独一索引条目,因此其他行可以包括一再项,但这些不能. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |