반응형
오라클 데이터베이스의 고유한 대/소문자 구분 안 함 제약 조건
나는 있습니다varchar
URL 값에 대한 내 표의 열입니다.저는 사건에 민감하지 않게 기록을 통해 그것을 독특하게 만들어야 합니다.나는 그것을 달성하기 위한 두 가지 방법을 찾았습니다.
필드에 고유 인덱스를 만듭니다.
create unique index <index_name> on <tablename>(lower(<column_name>))
필드에 다음과 같은 고유 제약 조건 추가
ALTER TABLE person ADD CONSTRAINT person_name_unique UNIQUE(LOWER(first_name),LOWER(last_name));
위의 선택 중에서 효율적으로 채택할 수 있는 방법은 무엇입니까?
더 효율적인 접근법이 첫 번째 접근법입니다.하지만 후자의 구문이 작동하지 않기 때문에 더 효율적입니다.그러나 고유 인덱스를 만들 수 있는 것과 같은 방식으로 함수 기반 제약 조건을 만들 수는 없습니다.
고유한 제약 조건이 작동하지 않음
SQL> create table person (
2 first_name varchar2(10),
3 last_name varchar2(10)
4 );
Table created.
SQL> ALTER TABLE person ADD CONSTRAINT person_name_unique
2 UNIQUE(LOWER(first_name),LOWER(last_name));
UNIQUE(LOWER(first_name),LOWER(last_name))
*
ERROR at line 2:
ORA-00904: : invalid identifier
그러나 고유한 기능 기반 인덱스는 작동합니다.
SQL> create unique index idx_uniq_name
2 on person( lower(first_name), lower(last_name) );
Index created.
- 1은 가능하며 중복에 대한 오류를 제공합니다.
- 2를 사용할 수 없습니다. (제약 조건에서 함수를 사용할 수 없습니다.)
언급URL : https://stackoverflow.com/questions/27032735/unique-case-insensitive-constraint-in-oracle-database
반응형
'programing' 카테고리의 다른 글
괄호 안의 숫자는 정말 무엇을 의미합니까? (0) | 2023.09.01 |
---|---|
클릭하면 브라우저에서 이미지 파일 다운로드 (0) | 2023.08.27 |
ASP.NET MVC - 느린 초기 로드 (0) | 2023.08.27 |
루프에 대한 다중 처리? (0) | 2023.08.27 |
스위프트 하위 클래스 UIView (0) | 2023.08.27 |