2010-06-18 4 views
0

Я переношу приложение из базы данных, не учитывающей регистр, в MySQL. Мой администратор базы данных не разрешает изменять какие-либо параметры конфигурации Mysql, поэтому использование «lower_case_table_names» не является вариантом.MySQL Alias ​​

Имеет ли MySQL способность сглаживания иметь несколько имен таблиц в одну и ту же таблицу?

Например, если USER и usersB были привязаны к одному столу, то эти два запроса будет вставить в ту же таблицу:

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

и

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

просмотров приблизиться к желаемому функциональность, но я хотел бы иметь обновление и изменять команды структуры для всех псевдонимов.

Спасибо!

ответ

1

Имеет ли MySQL способность сглаживания иметь несколько имен таблиц в одной таблице?

Существует не такое соглашение SQL - инструкция INSERT вставляет записи (записи) в одну и только одну таблицу. Определенные пользователем типы могут, но MySQL их не поддерживает.

Представление может быть использован для представления единой ResultSet - IE:

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

... и потенциально обновляемыми, но не будет работать для желаемой функциональности.

+0

Спасибо за идею, но я действительно искал что-то немного другое: на e, доступ к которым осуществляется по именам MANY. Например, была бы одна таблица с именем user, но клиентские запросы могли бы ссылаться на пользователя User777 или UsEr.У меня есть список из примерно 10-20 разных имен, которые идеально сочетались бы с одной физической таблицей. – David

0

Вы можете использовать представления и иметь UPDATE s (или любой DML), если вы поддерживаете код для представления. К сожалению, вы не можете использовать операторы ALTER (или любой DDL) для всех просмотров. Однако при изменении базовой таблицы вы можете восстановить все представления одним сценарием, чтобы убедиться, что система находится в синхронизации.

Поскольку я понял ваш вопрос, вы говорите о мнениях без соединений или объединений или даже фильтров - всего create view USER as select * from usersB. Вставку, обновления и удаления будут работать в вашем примере. АЛЬТЕРЫ не будут.

0

One (хорошо три) слова: MERGE storage engine. См.: http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html

Это абсолютно не проблема иметь только одну таблицу в MERGE, даже никто не будет допущен.


Edit: фигу, ALTER TABLE не будет работать для этого двигателя (следующую операцию в MERGE таблицы потерпит неудачу

0

Вид не такой же, как псевдоним таблицы (которые вы можете создать. с инструкцией CREATE ALIAS в СУБД, которые ее поддерживают), по крайней мере, до тех пор, пока ограничения между внешними ключами не поддерживаются между таблицами и представлениями, и клиент может определить, обновляется ли представление. MySQL не является. Псевдоним таблицы, который может указывать на таблицу в другой База данных очень полезна. Запрос функции.

Смежные вопросы