2011-03-15 6 views
0

복잡한 데이터베이스에서 Postgres는 많은 규칙과 많은 다른보기가 종속되어 있으므로보기를 변경하지 않습니다.PosgreSQL 데이터베이스의 종속성 추적

종속성이 모두있는 뷰를 DROP CASCADE과 함께 삭제할 수 있지만 나중에이 뷰를 어떻게 다시 만들 수 있습니까? VU이 모두 내가 원하는대로 변경할 수있는보기에 의존한다고 알고 있기 때문에 그렇게 쉽지는 않습니다. V보기가 U에 달려있는 경우 먼저 V을 작성한 다음 U을 작성해야합니다.

특정보기에 따라 다른보기 및 규칙을 추적하여 가장 쉽게 변경할 수 있습니까? 또한 모든 사람이 내 스크립트로보기를 변경할 수 있도록 스크립트를 생성하고 싶다면 쉽게 생성 할 수 있습니까?

+0

나중에 버전 컨트롤에서 개체를 가져옵니다. 그렇게 함으로서 당신은 적어도 당신이 가지고있는 어떤 객체인지 알게되고 빈 데이터베이스에서 그들을 다시 생성 할 수 있고 그 후에 객체 데이타 덤프를 수행하여 당신의 prod 데이타베이스가 소스 제어와 비교되었거나 비교하지 않은 것을 볼 수 있습니다. 이것은 릴리스 프로세스의 일부로 버전 제어 시스템을 유지 관리한다고 가정합니다. – Kuberchaun

+1

클라이언트의 라이브 데이터베이스를 변경해야하는데, 버전 관리에서 스키마가이 점에서 어떻게 도움이되는지 이해하지 못합니다. 나는 스키마를 이해할 수있다. –

+0

알았어. 나는 그것이 사내 데이터베이스 시스템이라고 가정했다. – Kuberchaun

답변

0

나는이 당신을 위해 작동 얼마나 잘 모르겠지만, 적어도 laborous 방법은 아마 DROP CASCADE하고 다시 만들 하락 전망에 apgdiff을 사용합니다 : 스키마를 만들 수

  1. 실행 pg_dump -s -f old_schema.sql 덤프 - 데이터베이스에서 기존의 스키마를 복원하는 스크립트를 생성 - 모든보기 등
  2. 실행 DROP VIEW x CASCADE
  3. 실행 pg_dump -s -f new_schema.sql
  4. 실행 apgdiff new_schema.sql old_schema.sql > restore.sql을 포함한다.
  5. psql -f restore.sql

는 불행하게도 이것은 아마 당신은 유지 보수를 위해 오프라인을해야하므로 데이터베이스가, 시간의 창에 대한 이러한 견해를 누락 될 것을 의미합니다.

1

시스템 테이블 pg_depend을 확인하여 종속성을 확인하십시오.

+0

사용 예제를 참조 할 수 있습니까? 예를 들어 설명하는 것이 더 쉽습니다. –