2009-08-15 2 views
1

첫 번째 데이터베이스 기반 응용 프로그램을위한 작은 배포 SQL 스크립트를 작성하고 있습니다. 내가 변수 또는 일반적으로 발생하는 데이터를 대체 할 수있는 매크로를 사용할 수있는 경우[My] SQL에 프리 프로세서와 유사한 기능이 있습니까?

GRANT USAGE ON *.* TO 'foo'@'localhost'; 
DROP USER 'foo'@'localhost'; 
CREATE USER 'foo'@'localhost' IDENTIFIED BY 'password'; 

그것은 환상적 일 것입니다 :하는 과정에서

, 나는 내가 예를 들어, 자신 많은을 반복 것을 찾을 수 있습니다. 다음 스 니펫과 같은 것을 구현할 수 있습니까?

SET @user='foo'; 

답변

1

대부분의 SQL 데이터베이스는 당신이 사용할 수있는 바인드 변수의 일종 :

#define USER 'foo'  #or "Type USER = 'foo'" 
#define HOST 'localhost' #or "Type HOST = 'localhost'" 

GRANT USAGE ON *.* TO [email protected] 
DROP USER [email protected] 
CREATE USER [email protected] IDENTIFIED BY 'password' 
0

당신은 확실히 뭔가를 할 수 있습니다.

는 예를 들어, PostgreSQL을에 당신은 PLSQL에서 \ set 명령을 사용

\set user = foo 
drop user :user; 
create user :user identified by 'password'; 

는 그러나, 나는 확실하지 않다 MySQL은 그런 일이 있다면. 이 변수를 수행하고 호스트와 사용자가 문자열이기 때문에,이 같은 것을 할 수 있습니다 변수가 드롭 작업 및 사용자 제표를 작성하지 않는 경우

select @user = 'foo'; 
select @host = 'localhost; 

drop user @[email protected]@host; 
create user @[email protected]@host identified by 'password'; 

하면, 당신은 항상 수정할 수 있습니다 직접 mysql.user 테이블, 그냥 flush privileges을 실행하는 것을 잊지 마세요.

insert into user values(host,@user,PASSWORD('some_pass'), 
     'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); 
flush privileges; 
관련 문제