오라클 테이블에 제약 조건을 추가해야합니다. 숫자 열은 0이거나 고유해야합니다 (및> 0). 제약 조건 정의 또는 함수 내에 쿼리를 삽입하려고 시도했지만 허용되지 않습니다. 아이디어가 있으십니까? 인사말, Marcelo.오라클은 제약 조건 컬럼을 0 또는 유일한 것으로 확인합니다.
0
A
답변
1
필자가 잘 이해하고 있다면 기능 기반 색인을 사용하여 양수 값의 고유성을 검사 할 수 있습니다. 예를 들어
: 다른 값을 삽입
SQL> create table checkUniqueTab(n number);
Table created.
SQL> create unique index i1 on checkUniqueTab(case when n > 0 then n end);
Index created.
작동 : 나는 0으로 많은 행을 삽입 할 수 있습니다
SQL> insert into checkUniqueTab values (1);
insert into checkUniqueTab values (1)
*
ERROR at line 1:
ORA-00001: unique constraint (ALEK.I1) violated
: 여기
SQL> insert into checkUniqueTab values (1);
1 row created.
SQL> insert into checkUniqueTab values (2);
1 row created.
내가 중복 양의 값을 삽입하려고 값 :
SQL> insert into checkUniqueTab values (0);
1 row created.
SQL> insert into checkUniqueTab values (0);
1 row created.
결과 :
SQL> select * from checkUniqueTab;
N
----------
1
2
0
0
이 이미 음수 값을 삽입 방지하기 위해 테이블에 제약 조건이 있다고 가정합니다.
당신은 우리에게 체크 제약을 어떻게 보여줄 수 있습니까? 또한 삽입물을 보여 주시겠습니까? 테이블의 DDL은 플러스가됩니다 – Moudiz
왜 0입니까? 이 제약이 적용하려는 비즈니스 규칙은 무엇입니까? – APC
중복 된 것으로 보입니다. http://stackoverflow.com/questions/42671008/how-do-i-add-a-not-null-column-and-a-check-constraint-in-one-line-in-oracle-11g 당신 것 같습니다. guyz는 함께 일합니다 – XING