* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Window7 32bit, Linux 64bit 등 |
|
[cubrid_rel] 수행 결과 |
|
[도움말]-[버전정보] 확인 |
|
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
객체에 접근하려면 사용자는 “스키마 이름.테이블 이름”의 경로 표현식을 사용해야 합니다.
dba로 loaddb했으면 그 테이블은 dba의 스키마 이름이 붙습니다.
user라는 아이디로 조회 시도 시 dba.테이블 이름으로 조회해야 합니다.
예) select * from dba.테이블이름
여기서 user라는 아이디로 스키마 이름 없이 테이블을 조회할려면 어떤 방법이 있을까요?
테이블 삭제 후 user로 loaddb하지 않는 방법이 있으면 더 좋겠습니다.
안녕하세요.
11.2 버전에서 사용자 이름으로 스키마 구분을 하기 시작하면서 Synonym도 같이 추가되었습니다.
user 라는 아이디에서 "dba.테이블이름"을 "테이블이름"이라는 synoynm으로 만들어두시면 dba. 을 붙이지 않고도 "테이블이름"으로 쿼리를 실행하실 수 있습니다.
예.
create user u1;
select * from dba.t1; /* dba. 을 붙여야지만 t1 테이블을 조회할 수 있는 상태입니다. */
create synonym t1 for dba.t1;
select * from t1; /* t1 synonym을 사용해서 dba.t1 테이블을 조회할 수 있습니다. */
u1 사용자가 dba.t1 테이블에 대한 select 권한을 가지고 있는가? 는 다른 문제입니다.
t1 synonym이 있음에도 dba.t1 테이블을 조회할 수 없다면 select 권한이 없는게 원인일 수 있습니다.
그리고 synonym을 만들더라도 DDL 문을 실행할 때는 사용할 수 없습니다.
자세한 내용은 매뉴얼을 참고해주세요.
https://www.cubrid.org/manual/ko/11.2/sql/schema/synonym_stmt.html