table alias (ou 'symlink') no mysql

2

no MySQL5.1, existe uma maneira de tornar uma tabela acessível por dois nomes diferentes? Estou pensando em algo como um link simbólico em sistemas de arquivos linux.

Eu sei que existe o

CREATE VIEW myview AS SELECT * FrOM mytable

coisa, mas eu não preciso apenas SELECT de ambos os nomes, mas também excluir etc ...

Você pode perguntar por que eu quero fazer isso? Trata-se de conseguir que um aplicativo comercial de código fechado funcione, o que é programado por defeitos (geralmente, os nomes das tabelas são todos em letras minúsculas, mas ocasionalmente usam nomes em maiúsculas para a mesma tabela ...). Ah, isso seria outra ideia: Existe uma maneira de dizer ao MySQL para não se importar com a capitalização de nomes de tabelas (como em sistemas de arquivos do Windows?)? isso também faria o truque ...

... encontrou a resposta: lower_case_table_names, uma variável. Uma vez que esta é a solução para o meu problema, mas não a resposta à minha pergunta (que ainda é interessante), ainda não respondo à minha pergunta ...

Obrigado pela sua visão!

A.

    
por andreas-h 22.05.2010 / 21:36

4 respostas

2

Considere olhar para a variável de sistema lower_case_table_names .

    
por 22.05.2010 / 21:41
1

Uma camada de abstração como Proxy do MySQL pode ajudar aqui.

    
por 22.05.2010 / 22:12
1

Você pode criar exibições atualizáveis no mysql 5.0, parece. Verifique aqui e pesquise na página por 'atualizável'.

Eu não sou um especialista em mysql innards, mas imagino que simplesmente o symlinking ou hard-linking terminará em loucura. O mysql provavelmente armazena em cache o estado do arquivo da tabela pelo nome do arquivo, e se 2 arquivos estão apontando @ os mesmos dados, você pode acabar em uma situação onde o mysql alterará o arquivo de dados em um 'nome', mas não o outro, resultando em corrupção flagrante.

    
por 22.05.2010 / 23:33
1

Acho que as Tabelas Federadas do mysql podem ser uma resposta para o seu questão subjacente. Não é o melhor desempenho, mas acho que, se você criasse uma tabela federada que aponta para a tabela existente no localhost, isso funcionaria.

    
por 25.05.2010 / 03:13

Tags