Liens symboliques pour "copier" une table

11 réponses
AuteurMessage

krucial |
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 08/10/2009 à 11:39

Salut !

Je vous explique mon probleme : j'ai une base BD1 avec, dedans, une table TB1.
J'ai un second site qui utilise une base BD2. J'aimerai cependant copier dans BD2 la table TB1 est faire en sorte qu'une modification dans BD1.TB1 affecte aussi BD2.TB1. J'ai lu dans la doc que mysql supportait les liens symbolique, sauf pour les fichiers .frm. Cela veut dire que je dois créer deux .frm identiques, puis, créer les liens symboliques ?

Utilisez vous cette techniques ? en existe-t-il une autre ? Que faire contre ma calvitie ? Tant de questions !

Merci

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 08/10/2009 à 12:10

Je ne pense pas que creer un lien symbolique entre deux fichiers de donnees fonctionne, car mysql conserve beaucoup de choses en cache, ca risque donc de posser pas mal de soucis si tu modifies tes donnees par TB1, ce que mysql aura en cache pour TB2 ne sera pas le reflet exact des donnees du disque.

N'est-til pas beaucoup plus simple d'utiliser les vues ? Dans BD2, tu cree une vue qui est exactement le contenu de BD1.TB1, tu auras acces a tout le contenu de la table sans probleme.

Apres, comme on connait pas ton besoin exact, c'est difficile de te proposer une solution adaptée

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 08/10/2009 à 12:43

Hello,

pourquoi t'utilises pas directement la table en fait ? Ca évitera les conflits avec MySQL et le gaspillage des divers caches.

select * from BD1.TB1

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 08/10/2009 à 13:30

Parce que le second site doit etre reellement distinct du premier. Si je dois m'en separer un jour, par exemple. Je prefere que tout soit pret dans cette hypthese.

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

tonguide | Jeremy
Modérateur

 

Inscrit le : 09/05/2005

# Le 08/10/2009 à 13:38

Tu places une variable pour les tables que tu veux "copier" et lorsque tu vends, tu fais un export ?

Du style

$var='BD1.';
et tu le changeras par
$var='';
le jour de la vente.

et évidemment 'SELECT ' . $var . 'TB1 ';

c'est quand même le plus simple, surtout si la table change souvent (par rapport au cache MySql). Et ça prend 2 min si tu dois vendre.

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 08/10/2009 à 14:01

Mouaaaaaaiis. Ok merci

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 08/10/2009 à 14:04

Ou tu fais une vue, comm ca TB2 est bien la copie exacte de TB1 en permanence, et le jour ou tu vends, tu remplaces ta vue par une "vrai" copie en dur de TB1 sans rien avoir a changer au code nul part.

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 08/10/2009 à 14:05

Une "vue" ? Tu peux m'expliquer ?

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 08/10/2009 à 14:07

http://www.google.fr/search?hl=fr&q=vue+mysql&...Ouvrir dans une nouvelle fenetre

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 08/10/2009 à 14:54

C'est EXACTEMENT ce que je cherchais. Je connaissais pas du tout, je trouve ca tiptop. Merci Mathieu.

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

koreth | Sébastien
Membre

Photo de koreth

Inscrit le : 17/09/2009

# Le 08/10/2009 à 17:22

Partant du principe que tu as trouvé ton bonheur, je vais juste rebondir sur l'une de tes phrases, pour la culture générale.

Crucial a dit :
faire en sorte qu'une modification dans BD1.TB1 affecte aussi BD2.TB1.


C'est exactement le but des procédures stockées dans les différents SGBDR que sont MySQL, Postgres, Oracle et j'en passe. L'idée générale de ceux qu'on appelle "les triggers" (littérallement, les "déclencheurs") c'est que sur certaines actions (INSERT, UPDATE, DELETE) on peut déclencher d'autres actions. Très pratique par exemple pour soulager PHP dans certions cas : tu entre des nouvelles valeurs dans une table, et une procédure stockée se charge de faire des vérifications de cohérence, des sommes, des reports dans d'autres tables... ainsi, ton code "client" (le php ou tout autre langage) ne se charge que de l'insertion, le reste est géré par le SGBD lui-même.

Un ptit lien vers la page des triggers de MySQL :
http://dev.mysql.com/doc/refman/5.0/fr/create-trig...Ouvrir dans une nouvelle fenetre

Mais comme dit précédemment, le concept existe pour la plupart des SGBD (attention, on n'est au point sur MySQL que depuis les versions 5.x, de mémoire).

Sébastien

Sébastien BAUDRU, CEO DRASTIC
http://www.drastic-securite.comOuvrir dans une nouvelle fenetre

ViadeoOuvrir dans une nouvelle fenetre LinkedInOuvrir dans une nouvelle fenetre FacebookOuvrir dans une nouvelle fenetre

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 08/10/2009 à 18:25

Oui, MySQL a mis tellement de temps a le supporter que je n'y pense jamais

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 3:42:38 | Généré en 8.17ms | Contacts | Mentions légales |