SELECT s.relname AS sequence, n.nspname AS SCHEMA, t.relname AS TABLE
FROM pg_class s
JOIN pg_depend d ON d.objid=s.oid AND d.classid='pg_class':: REGCLASS AND d.refclassid='pg_class':: REGCLASS
JOIN pg_class t ON t.oid=d.refobjid
JOIN pg_namespace n ON n.oid=t.relnamespace
JOIN pg_attribute a ON a.attrelid=t.oid AND a.attnum=d.refobjsubid
WHERE s.relkind='S' AND d.deptype='a'
\d
옵션을 통해서 다음과 같은 정보를 볼 수 있다.id
의 기본값이 nexval('piks_category_id_seq')
라는 것SELECT
를 이용하여 위의 함수가 의미하는 바를 확인 가능DROP DEFAULT
를 하게되면 아래와 같이 기본값이 사라지게 됨위의 메시지를 보면 linkhub_link
의 기본값(시퀀스)가 다른 테이블에서 의존적인 관계를 맺고 있다는 에러 메시지를 출력
다시 위로 올라가서 가장 위의 쿼리를 실행한 결과를 보면 시퀀스를 소유하고 있는 스키마와 테이블을 볼 수 있음
CASCADE
옵션을 통해서 FK가 존재하지 않게되면 자동으로 테이블을 삭제하면서 시퀀스를 삭제할 수 있지만 이 기본값을 linkhub_link
테이블이 사용하고 있기 때문에 우리는 이 방법을 원하지 않음FK constraint
를 제거하는 것dummy_link
가 아닌 linkhub_lnk
로 바꿔주면 완료!