Comment puis-je créer un alias de la table dans MySQL
Je suis la migration d'un MS d'Accès de l'application (qui a tables liées à un Serveur MSSQL) de MySQL.
Comme un moyen de surmonter certains MSAccess table de nommer les problèmes, je suis à la recherche d'une solution pour ajouter une table MySQL alias qui pointe vers une table existante dans la base de données MySQL. Idéalement, je voudrais créer l'alias 'dbo_customers" dans mysql, qui serait le point de la les clients table dans mysql.
Pour être clair, je suis pas vouloir alias du nom d'une table à l'intérieur d'une requête comme ceci:
SELECT * FROM customers AS dbo_customers
Mais j'aimerais pouvoir exécuter la requête suivante:
SELECT * FROM dbo_customers
et ont pour retourner des données de la table clients.
- Pourquoi ne pas renommer la table?
- Dans certains cas, de renommer la table ne fonctionne pas. Par exemple, si vous travaillez avec deux ORM systèmes avec différentes conventions de nommage, vous avez besoin d'un alias pour les deux fonctionnent bien. Dans ce cas, par la manière, la solution retenue a été assez bon pour moi 🙂
Vous devez vous connecter pour publier un commentaire.
Sur le dessus de ma tête
Peut-être pas la meilleure solution mais devrait fonctionner car la vue est mise à jour. Sera certainement travailler pour Lire Uniquement
Vous pouvez créer un Vue.
Si cela ne fonctionne pas pour vous, vous pouvez essayer de créer une ombre-une copie de la table, et utiliser des Déclencheurs pour garder les tables synchronisés.
Par exemple:
Pas exactement un "alias", et loin d'être parfait. Mais c'est une option, si tout le reste échoue.
@OMG Poneys poneys dit dans un commentaire:
...et il semble que la réponse la plus évidente pour moi.
Si vous créez un ODBC liés table pour la table MySQL clients, elle sera appelée clients et puis tout ce que vous avez à faire est de renommer la table à dbo_customers. Il n'y a absolument aucun besoin que je peux voir pour créer une vue en MySQL pour ce but.
Cela dit, je déteste avoir un Accès application à l'aide de SQL Server noms de table lorsque les tables MySQL n'ont pas été nommées de la même chose-c'est juste confus et conduire à des problèmes de maintenance (c'est à dire, c'est plus simple pour les tables liées à l'Accès frontal à avoir les mêmes noms que les tables MySQL, dans la mesure du possible). Si j'étais à votre place, j'aurais une recherche et remplacer utilitaire et remplacer tous les SQL Serveur de noms de table avec la table MySQL noms tout au long de l'ensemble de l'Accès frontal. Vous auriez probablement faire une table à la fois, mais à mon avis, le temps qu'il faut pour le faire maintenant va être plus que dans la clarté d'aller de l'avant avec le développement de l'Accès frontal.
J'ai toujours renommer mon "lié à SQL" tables dans Access à partir de
{dbo_NAME}
à{NAME}
.Le lien crée le nom de la table comme
{dbo_NAME}
mais l'accès a parfois des problèmes avec la dbo_ préfixe.Alias serait bien, mais MySQL ne PAS disposent de cette fonctionnalité.
Une option qui peut répondre à vos besoins, en plus de la création d'une vue, est d'utiliser le FÉDÉRÉS moteur de stockage localement.
Il y a actuellement quelque les limitations à la FÉDÉRÉS moteur de stockage. Voici un couple en particulier les plus importants:
Vous pouvez créer un vue nommé
dbo_customers
qui est soutenu par lecustomers
table.il y a une solution plus simple pour MySQL via table de FUSION de moteur:
imaginer que nous avons de la table nommée
rus_vacancies
et de son équivalent en anglaismaintenant le tableau
rus_vacancies
est égal à la tableeng_vacancies
pour tout lire-écrire les opérations deune limitation de la table d'origine doit avoir ENGINE=MyISAM (il peut être fait facilement par "
alter table rus_vacancies ENGINE=MyISAM
")Vous devez créer une vue pour la table, puis sélectionnez à partir de ce.