2013-05-29 3 views
2

이 문제에 대한 도움을 주시면 감사하겠습니다. MySQL 데이터베이스를 사용하는 웹 사이트를 운영하고 있습니다. MySQL Workbench에 데이터베이스 모델을 구축했으며 모든 SQL 쿼리는 저장 프로 시저입니다. 문제는 데이터베이스를 구조적으로 변경하면 영향을받는 저장 프로 시저를 모르기 때문에 모든 프로 시저를 수동으로 나열하고 수동으로 변경하거나 try-and-error 메서드를 사용해야한다는 것입니다. 질문 - 저장 프로 시저 업데이트 프로세스를 자동화하는 방법이 있습니까? 특정 구조적 변경을 데이터베이스에 적용 할 때 스토어드 프로 시저가 영향을받는 정확한 위치를 알고 싶습니다. MySQL에서 가능하지 않다면 다른 데이터베이스에서도 가능합니까? (오픈 소스 또는 상업용). 감사합니다.데이터베이스를 구조적으로 변경 한 후 MySQL 저장 프로 시저를 업데이트하십시오.

답변

0

MySQL은 실제로 프로 시저를 실행할 때까지 (오류가 발생 함) 변경 사항의 영향을받은 프로 시저에 대한 정보를 제공하지 않습니다. INFORMATION_SCHEMA는 MySQL은 스토어드 루틴에 대한 정보를 제공하는 테이블 ROUTINES (모두 프로 시저 및 함수)이 있습니다

USE INFORMATION_SCHEMA; 
DESCRIBE ROUTINES; 
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM ROUTINES; 

그것을 자신을 수행하지 않은,하지만 난 당신이에 대해 검색 할 SQL 쿼리를 작성할 수 있습니다 확신 ROUTINE_DEFINITION 행에서 열 이름을 변경하고 수정해야하는 모든 절차 목록을 제공하십시오.

절차 변경은 DROP PROCEDURE/CREATE PROCEDURE 명령을 사용하여 수행해야합니다. INFORMATION_SCHEMA 데이터베이스에서는 직접 변경할 수 없습니다.

+0

고마워요. 저에게 도움이되었습니다. –

+0

반갑습니다. 귀하의 절차에 행운을 빈다. – GregD

2

종속 오브젝트가 변경되거나 유효하지 않게되면 저장 프로시 듀어가 유효하지 않게됩니다. 종속 객체는

가 유효 하나는 DBA 단순히 스크립트를 실행할 수 있습니다

SELECT object_type, count(*) 
FROM user_objects 
WHERE status = 'INVALID' 
GROUP BY object_type 

을 실행할 수있는 현재 모든 객체의 수를 찾으려면 ($ORACLE_HOME/rdbms/admin/utlrp.sql)을 다른 참조 저장 프로 시저, 테이블, 패키지 등을 포함 모든 유효하지 않은 오브젝트 (뷰, 프로 시저, 패키지, 함수, 트리거 등)를 컴파일합니다. Oracle 용 타사 도구 (예 : Toad)는 GUI를 통해 유사한 기능을 제공합니다.

+0

감사에서

더 많은 정보를 제공합니다. 어쩌면 언젠가 MySQL에서 이전하기로 결정했을 것입니다. –