기본 키 변경
Oracle에 다음 스키마를 가진 테이블이 있습니다.
City_ID Name State Country BuildTime Time
테이블을 선언했을 때 나의 주요 키는 둘 다였다.City_ID
및 그BuildTime
단, 프라이머리 키를 다음 3개의 컬럼으로 변경합니다.
City_ID BuildTime Time
프라이머리 키를 변경하려면 어떻게 해야 하나요?
테이블명이city
기존 프라이머리 키는pk_city
다음 작업을 수행할 수 있습니다.
ALTER TABLE city
DROP CONSTRAINT pk_city;
ALTER TABLE city
ADD CONSTRAINT pk_city PRIMARY KEY (city_id, buildtime, time);
다음 장소의 레코드가 없는지 확인합니다.time
이NULL
그렇지 않으면 제약조건을 다시 작성할 수 없습니다.
다음과 같이 프라이머리 키를 드롭하고 다시 작성해야 합니다.
alter table my_table drop constraint my_pk;
alter table my_table add constraint my_pk primary key (city_id, buildtime, time);
단, 이 프라이머리 키를 참조하는 외부 키가 있는 다른 테이블이 있는 경우 먼저 해당 테이블을 삭제하고 위의 작업을 수행한 후 새 열 목록을 사용하여 외부 키를 다시 작성해야 합니다.
기존 기본 키를 삭제하는 대체 구문(예: 제약 조건 이름을 모르는 경우)
alter table my_table drop primary key;
다음 단계를 수행할 때 다음과 같은 경우가 있습니다.
alter table my_table drop constraint my_pk;
alter table my_table add constraint my_pk primary key (city_id, buildtime, time);
마지막 스테이트먼트가 에 실패합니다.
ORA-00955 "이름은 기존 객체에 의해 이미 사용되고 있습니다"
Oracle은 보통 my_pk라는 이름의 고유한 인덱스를 만듭니다.이 경우 제약 조건이 여전히 적절한지 여부에 따라 고유 인덱스를 삭제하거나 이름을 변경할 수 있습니다.
프라이머리 키 제약 조건과 고유 인덱스의 폐기를 단일 SQL 문에 결합할 수 있습니다.
alter table my_table drop constraint my_pk drop index;
ORA-00955 "name is are used by existing object" 체크해주세요.
언급URL : https://stackoverflow.com/questions/2310561/change-primary-key
'programing' 카테고리의 다른 글
PHP json 인코딩 - 잘못된 형식의 UTF-8 문자, 잘못 인코딩되었을 수 있습니다. (0) | 2023.02.14 |
---|---|
ODP를 실행합니다.NET에 Oracle Client 설치 필요 (0) | 2023.02.14 |
ng-click이 ng-blur 이벤트보다 우선하도록 강제하려면 어떻게 해야 합니까? (0) | 2023.02.14 |
Oracle SQL 날짜 비교 (0) | 2023.02.14 |
Ionic 프레임워크 $state.go('app')home' )는 이동처 페이지의 뒤로 버튼을 추가하는 것입니까(삭제 방법)? (0) | 2023.02.14 |