最初由 totu_sz 发布
[B]create unique index idx_indexname on tablename(decode(type, 1, name,
null))这不是详细的语法么?decode(type,1,name,null)就是一个函数,意思是表中有一个字段type,当type为1时就取name,type不为1就取null,这样就可以将所有type为1的记录取出来建立唯一index,而type是其它值的记录被过滤掉了。我试过,确实满足要求。
其它的函数应该也可以,具体函数清单我也没有,如果需要,可逐一去试。
另外用户需要的权限:
(QUERY REWRITE系统权限。)如果不好赋给,直接用dba的权限也可以为自已或其它用户创建这种index,创建完毕,那两个初始化参数可以改回,权限也可以收回。
基于函数的索引已经建立,就开始生效,使用这个索引和普通索引一样。
create unique index idx_indexname on tablename(decode(type, 1, name,
null), decode(type, 1, authorizescope,null)) --这是创建一个组合索引,基于name+authorizescope字段的。 [/B]
我能看懂你的这个语句,我是意思是说你能不能写出创建这种基于条件的唯一索引的整体语法.(不仅仅是针对解决某一个特定问题的)
比如基于相等、范围、字段关联什么。 |