2012-03-12 4 views
0

특정 테이블, 인덱스 등이 데이터베이스에 존재하는지 확인하는 업데이트 스크립트를 작성해야하며 그렇지 않은 경우 데이터베이스를 작성해야합니다. 필자는 PgAdmin의 쿼리 창에 메시지를 입력 할 때 Syntax Error at IF 메시지를 계속 수신하므로 이러한 검사를 수행하는 방법을 파악할 수 없었습니다.데이터베이스를 업데이트하기위한 PostgreSQL 용 스크립트 작성 중?

Pl/pgSQL을 사용하여 이러한 업데이트를 수행하는 공용 스키마에서 저장 프로 시저를 작성하고 업데이트를 실행해야합니다. 바라건대, 나는 작업을 완료하기 위해 여분의 데이터베이스 객체를 만들지 않고도 실행할 수있는 스크립트 만 작성할 수 있습니다.

+0

어떤 종류의 업데이트 및 무엇을 확인하려고합니까? – Karlson

답변

3

당신이 원하는 것을 성취하십시오.

+0

고마워, 그게 내가 원하는거야! –

1

pg_tables을 들여다 보았습니까?

select * from pg_tables; 

이렇게하면 데이터베이스에있는 스키마와 테이블이 반환됩니다. 당신이 찾고있는 것을 더 많이 알지 못한다면 이것은 합리적으로 시작할 수있는 것처럼 보입니다. 그 전에 아무것도 들어 http://www.postgresql.org/docs/current/static/sql-do.html

, 당신은 함수를 작성해야합니다 : 당신은 PostgreSQL의 9.1에있는 경우, 당신은 당신이 DO 블록으로 IF 조건 코드를 래핑 할 수 9.0에 CREATE TABLE ... IF NOT EXISTS

을 사용할 수 있습니다

+0

사실, 예, 저는 pg_tables를 살펴 보았습니다. 이 테이블 (및 기타)에 대해 쿼리를 사용하여 데이터베이스 스키마에 변경해야 할 사항을 결정합니다. 문제는 Postgres가 IF 문을 지원하지 않기 때문에 내 논리를 작동시키는 법을 모르는 것이 었습니다. DO 블록 문을 사용하면 IF 문을 작성하고 실행할 수 있습니다. 그게 내가 찾고 있던거야. –

관련 문제