테이블을 drop한후에도 시퀀스 테이블이 남아서,좀 걸림돌이 되는데요..시퀀스 테이블은 삭제 할수 없나요?일일이 테이블 이름 바꾸려니깐 지저분하기도 하고 보기 않좋네요.기분도 개운치 않구요.
시퀀스와 테이블은 서로 독립적입니다. (이것이 원칙입니다.)
즉, 여러 테이블이 같은 시퀀스를 사용할 수도 있습니다.
그래서, 테이블이 삭제 되었다 하더라도 시퀀스를 삭제 하지 않는 것이 바람직합니다.
그런데, 문제는 PostgreSQL에서는 serial 이라는 자료형이 자동으로 시퀀스를 만드는데, 이것 때문에 윗 시퀀스와 테이블의 관계에서 아주 묘한 문제점이 생기게 됩니다.
7.2.x 이하 버전에서는 일단 serial 자료형으로 선언했건 말건 무조건 SQL 원칙을 따릅니다.
즉, 테이블을 만들때, 비록 자동으로 생겼다 하더라도 테이블이 삭제될 때는 자동으로 삭제 되지 않습니다.
하지만, 7.3 이상 버전에서는
두가지 경우로 처리합니다.
serial 때문에 생간 시퀀스는 테이블 종속적으로 테이블이 삭제되면 자동으로 삭제 되지만, 시퀀스 독립적으로 삭제가 불가능해지며,
사용자가 임의로 시퀀스를 만들면, 그놈은 테이블과 독립적으로 삭제됩니다.
(어느 처리가 더 바람직한지는 모르겠지만, 아무튼 7.3 이상 버전에서는 이방식을 사용하게 되었습니다)
이상이 PostgreSQL의 시퀀스 처리에 대한 약사(?)입니다.
질문의 답:
DROP SEQUENCE sql 구문을 살펴보세요.