반응형
기존 검사 제약을 수정하는 방법은 무엇입니까?
테이블을 삭제하고 다시 만드는 것 외에 테이블에 대한 기존 검사 제약 조건을 수정할 수있는 방법 이 있습니까?
create table t ( n number);
ora10g> Tabelle wurde erstellt.
ora10g> alter table t add constraint ck check(n>0);
Tabelle wurde geõndert.
ora10g> alter table t modify constraint ck check(n<0);
alter table t modify constraint ck check(n<0)
*
FEHLER in Zeile 1:
ORA-00933: SQL-Befehl wurde nicht korrekt beendet
삭제하고 다시 만들어야하지만 원하지 않는 경우 데이터를 다시 확인하는 데 드는 비용이 발생하지 않아도됩니다.
alter table t drop constraint ck ;
alter table t add constraint ck check (n < 0) enable novalidate;
이 enable novalidate
절은 제약 조건이 적용되도록 삽입 또는 업데이트를 강제하지만 모든 행이 준수하는지 확인하기 위해 테이블에 대한 전체 테이블 스캔을 강제하지 않습니다.
먼저 새 제약 조건을 만든 다음 이전 제약 조건을 삭제하십시오.
이렇게하면 다음을 보장 할 수 있습니다.
- 제약은 항상 제자리에 있습니다.
- 기존 행은 새로운 제약 조건을 위반하지 않습니다.
- 제약 조건을 삭제 한 후 새로운 제약 조건이 적용되기 전에 잘못된 INSERT / UPDATE가 시도되지 않습니다.
아니요, 다른 방법으로 할 수 없습니다.
아니요. 그러한 기능이있는 경우이 구문 그림에 나열됩니다 . (문서화되지 않은 SQL 기능이 있거나 내가 알지 못하는 패키지가있을 수도 있습니다.)
참고 URL : https://stackoverflow.com/questions/5077658/how-to-modify-an-existing-check-constraint
반응형
'IT TIP' 카테고리의 다른 글
.NET 콘솔 응용 프로그램 종료 이벤트 (0) | 2020.11.20 |
---|---|
'실시간'프로세스 우선 순위 설정은 무엇입니까? (0) | 2020.11.20 |
UIImagePickerController의 전면 카메라 (0) | 2020.11.20 |
다른 배열의 객체 속성에서 배열 만들기 (0) | 2020.11.20 |
GPS에 인터넷이 필요합니까? (0) | 2020.11.20 |