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 인 상품 이름 이 같은 데 이 터 를 마음대로 삽입 할 수 있다.

좋은 웹페이지 즐겨찾기