Tibero/Admin
기본키(Primary key)와 pk인덱스에 관하여...
소마후니
2015. 9. 14. 19:00
오라클에선 pk 생성시 자동으로 pk인덱스가 생성된다.
마찬가지로 pk 삭제시 자동으로 pk인덱스는 삭제된다.
예를 들어보자. TEST_AA 테이블이다.
TEST_AA 라는 테이블에는 현재 PK가 지정되어 있지 않다.
TEST_AA 테이블의 인덱스를 조회하니 역시 존재하지 않는다.
PK를 생성해보자.
그리고 인덱스를 다시 조회해보았다.
보이는것과 같이 PK인덱스가 자동으로 생성된것을 확인할수 있다.
그럼 PK를 삭제해보자.
그리고 다시 인덱스를 조회해보자.
자동으로 PK인덱스가 삭제된것을 알수 있다.
문제는 ....
Tibero에서 이와 같은 작업을 하면 에러는 안나지만 인서트 업데이트 조회등을 할경우 에러가 발생할수도 있다.
기존에 PK컬럼이 (col1,col2) 가 있었는데 여기에 컬럼하나(col3)를 더 추가할 경우
해당 PK를 드랍한뒤 추가하려는 컬럼과 함께 PK를 생성하면 ..생각대로라면 PK인덱스는 하나만 있어야 한다.
즉 col1,col2가 과거에 PK컬럼이였는데 이것을 col1,col2,col3을 PK로 지정하려고 하면 다음과 같은 작업순서에 따라야 한다.
여기서 추측은 기존에 PK를 드랍하니까 당연히 PK인덱스도 함께 삭제가 될것이다.
또 다시 컬럼을 추가하여 PK를 생성하니까 PK인덱스가 새로 만들어질 것이다.
허나 Tibero에서는 PK인덱스가 생성은 자동으로 되지만 삭제는 사용자가 직접 해줘야 된다.
버전별로 차이가 나는지는 확실히 모르겠지만 Tibero 4 (Build 46211, DB 4.0) 에선
문제가 되었따.