Oracle 조건 색인 만 드 는 방법
1040 단어 Oracle 학습 노트
데이터베이스 상품 표 에 goodsid,goods_name,goods_price, status 네 필드, goodsid 는 자체 증가 키 이 고 status 는 상태 이 며 0, 1 두 가지 가능성 만 있 습 니 다. 기본 값 은 1, goods 입 니 다.name 은 상품 명 입 니 다.상태 가 1 인 상품 명 은 중복 이 허용 되 지 않 으 며 상태 가 0 인 경우 에는 무한 중복 이 가능 합 니 다.
먼저 표 만 들 기:
-- Create table
create table TB_GOODS
(
goods_id VARCHAR2(64) not null,
goods_name VARCHAR2(256) not null,
goods_price VARCHAR2(64) not null,
status VARCHAR2(1) not null
);
-- Create/Recreate primary, unique and foreign key constraints
alter table TB_GOODS
add constraint PK_TB_GOODS primary key (GOODS_ID); 어떻게 업무 장면 을 실현 합 니까?
-- Create/Recreate indexes
create unique index TB_GOODS_UNIQUE_INDEX on TB_GOODS (GOODS_NAME, DECODE(TO_NUMBER(STATUS),1,STATUS,GOODS_ID)); Oracle 에서 제공 하 는 decode 함 수 를 사용 하여 다음 과 같이 실현 합 니 다.
상태 가 1 이면 유일한 색인 을 goods 로 설정 합 니 다.name,status
상태 가 1 이 아니라면 유일한 색인 을 goods 로 설정 합 니 다.name,goods_id
이렇게 하면 상태 가 0 인 상품 이름 이 같은 데 이 터 를 마음대로 삽입 할 수 있다.