2010-06-18 2 views
0

대/소문자를 구분하지 않는 데이터베이스에서 MySQL로 응용 프로그램을 마이그레이션하고 있습니다. 내 DBA는 mysql 구성 설정을 변경할 수 없으므로 "lower_case_table_names"옵션을 사용할 수 없습니다.MySQL 테이블 별칭

MySQL에 여러 테이블 이름이 동일한 테이블을 가리키는 별칭 기능이 있습니까?

사용자와 usersB가 같은 테이블에 별명이 있다면 예를 들어,이 두 쿼리는 같은 테이블에 삽입합니다 :

Insert into USER VALUES (2, 3....); 

Insert into usersB VALUES (2, 3, ....); 

조회수가 원하는 가까이 와서 기능을 사용하고 싶지만 모든 별칭에 대해 구조 명령을 업데이트하고 변경하고 싶습니다.

감사합니다.

답변

1

MySQL에 여러 테이블 이름이 같은 테이블을 가리키는 별명 지정 기능이 있습니까?

이러한 SQL 규약은 없습니다. INSERT 문은 하나의 테이블에 레코드를 삽입합니다. 사용자 정의 유형은 가능하지만 MySQL은이를 지원하지 않습니다.

CREATE VIEW vw_users AS 
    SELECT * FROM USER 
    UNION 
    SELECT * FROM USERSB 

을 ... 그리고 잠재적으로 업데이트 할 수 있지만, 원하는 기능을 작동하지 않습니다 IE -

은 통합 된 결과 집합을 제시하는 데 사용할 수 있습니다.

+0

아이디어를 주셔서 감사합니다. 그러나 저는 실제로 약간 다른 것을 찾고 있습니다 : on 많은 이름으로 액세스 할 수있는 테이블. 예를 들어 user라는 단일 표가 있지만 클라이언트 조회는 USER user777 또는 UsEr을 참조 할 수 있습니다.나는 약 10-20 개의 서로 다른 이름의리스트를 가지고 있는데, 하나의 물리적 인 테이블에 이상적으로 앨리어스 처리된다. – David

0

뷰의 코드를 유지 관리하는 경우 뷰를 사용하고 UPDATE (또는 모든 DML)을 올바르게 사용할 수 있습니다. 아쉽게도 ALTER 문 (또는 모든 DDL)을 모든보기에 사용할 수 없습니다. 그러나 기본 테이블을 변경할 때 시스템이 동기화되어 있는지 확인하기 위해 모든 뷰를 단일 스크립트로 다시 생성 할 수 있습니다.

귀하의 질문을 이해하기 때문에 조인 또는 공용체가 없거나 필터가없는보기에 대해 이야기하고 있습니다. 단지 create view USER as select * from usersB입니다. 삽입, 업데이트 및 삭제가 예제에서 작동합니다. ALTER는 그렇지 않습니다.

0

하나 (세 단어) : MERGE storage engine. 참조 : http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html

MERGE에 하나의 테이블 만 있으면 아무런 문제가 없습니다. 아무리해도 허용되지 않습니다.


편집 : 신경 끄시 고, ALTER 표는이 엔진 작동하지 않을합니다 (MERGE 테이블에 다음 작업을 실패

0

를 전망 당신이 만들 수 있습니다 (테이블 별칭과 동일하지 않습니다. 적어도 테이블과 뷰간에 외래 키 제약 조건이 지원되고 클라이언트가 뷰를 업데이트 할 수 있는지를 결정할 때까지는이를 지원하는 DBMS의 CREATE ALIAS 문을 사용한다.) MySQL은 그렇지 않다. 다른 테이블의 테이블을 가리킬 수있는 테이블 별칭 데이터베이스는 매우 유용합니다. 기능 요청.