copie d'une table vers une aute

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : copie d'une table vers une aute

par BeRoots » 16 avr. 2007, 18:59

en fait j'ai un simple formulaire via lequel je travaille sur la table privé avec une fois fini toutes les modifications, une boucle "Enregistrer" qui doit actualiser la table public.

coté visiteur, c'est juste un affichage de tout le contenu de la table qui est effectuer (SELECT).

pour le moment je fait un DROP, CREATE, INSERT afin de recréé la meme table public suivant le modele de la table privé.

je veut juste trouver un moyen via SQL de faire en sorte que ma requete DROP, CREATE, INSERT soit executer lorsqu'aucune requete des visiteurs n'est en cours. J'aimerai aussi que si durant le DROP, CREATE, INSERT, un visiteur consulte la page et tombe sur une erreur de sql, un message du style recharger la page soit afficher :-k

c'est pour cela que je pensait mettre un verroux READ sur le SELECT et un LOW_PRIORITY WRITE coté DROP, CREATE, INSERT.

mais mon problème est que je ne sait pas si cela suffirait à eviter l'erreur sql coté visiteur (SELECT).

si quelqu'un utilise les verroux et à une idée sur le sujet ;)

par ouckileou » 16 avr. 2007, 17:06

Tu peux faire un fichier de config, qui dit vers quelle table pointer, tableA ou tableB... avec toujours tous les problèmes dont tu parles... :?

par BeRoots » 16 avr. 2007, 17:00

en fait pour le update/insert, il faudrai que je face une recherche de toutes les differences entres les deux tables avant mais je vois pas trop comment cela peut ce faire :?

le truc c'est que je fait des réorganistations de catégorie pour avoir un ordre d'affichage bien specifique. de ce fait, je me retrouve avec beaucoup de modif à transferer d'une table à l'autre...

je vait donc faire comme prevu. par contre je sait pas trop si il y a un moyen de s'assurer que ma requete pour remplacer la table public soit executer lorsque aucune requete coté client n'est executer sur celle-ci.

si quelqu'un voit quelque chose pour mettre les requetes select (coté visiteur) en stand by pendant que mes requete coté admin s'execute ?

par Ryle » 16 avr. 2007, 11:37

Et euh... ca serait pas vachement plus simple et plus propre que lorsque tu valides tes modifs dans ton appli, ca vienne faire un update/insert uniquement des données concernées de ta table "visiteur", que de dropper et reconstruire des tables à la volée ?

A la limite détruire une table, avec des snapshots, je peux le concevoir, mais là... que se passe-t-il si l'instruction de création de table plante ? Tout ton site est innaccessible jusqu'à ce que tu t'en rendes compte et que tu relances une validation ?

par BeRoots » 16 avr. 2007, 11:22

je vais reposer ma question de façon plus simple :?

comment faire pour que je puisse effacer et recréé une table sql sans qu'il y ai d'erreur pour les personnes consultant cette table?

par BeRoots » 16 avr. 2007, 09:29

ok j'ai enfin trouver une methode toute simple pour copier le contenu de ma table priver vers ma table public :)


- j'efface ma table.
- je la recréé
ensuite je recharge les données de la privé vers la nouvelle table public:

Code : Tout sélectionner

INSERT INTO `ma_db`.`private_table` SELECT * FROM `ma_db`.`public_table`;
par contre j'aimerai bien trouver une methode pour faire en sorte d'effectuer ces 3 actions avec une priorité pour les requetes client afin que si un visiteur consulte actuellement la table, on reporte le thread de mise à jour afin de ne pas causer de bugs coté visiteur...

mon idée est la suivante:

lorsque l'on tente d'acceder à la table public, on pose un verrou READ sur celle-ci et une fois fini, on deverouille la table

du coté admin, on pose une verrou LOW_PRIORITY WRITE afin que la requete des 3 actions à effectuer soit faite une fois la table public redevenu deverouiller.

Pensez vous que cette methode soit correct?

par BeRoots » 14 avr. 2007, 10:30

j'ai bien vue le mysqlhotcopy mais bon je sait pas trop si il y a moyen de remplacer la table public par une sauvegarde de la table privé :?

Quelqu'un aurrai une idée à me soumettre? ;)

par BeRoots » 13 avr. 2007, 14:08

dans mon cas, le problème vient du fait que je joue sur tous les enregistrement dans le ceas d'une réorganistion de mes categorie :?

cela voudrai dire que tous mes champs passerrai en drapeau privé et donc rien ne s'afficherai coté publique :?

quelqu'un aurrai une autre idée à me proposé pour faire un remplacement de la table publique par une copie de la table admin et ce lorsque aucune requete n'est soumise à la table publique (afin d'evité les bugs)?

par jojolapine » 13 avr. 2007, 14:02

on entend généralement par drapeau (ou flag en anglais ;-) ) le fait de rajouter un champ booléen qui indique par exemple dans ton cas si oui ou non l'entrée de ta table doit être publique ou si elle doit seulement apparaitre dans la partie admin...

par BeRoots » 13 avr. 2007, 13:39

qu'entent tu par drapeau... pourrait tu me l'expliquer dans un petit exemple tout bête ;)

par ouckileou » 13 avr. 2007, 13:24

Et un drapeau "affichable/non affichable" ne coniendrait pas ?

Parceque là avec ta manip tu vas galérer... on remplace pas une table pas une autre comme ça régulièrement et sans interruption de service.

par BeRoots » 13 avr. 2007, 12:34

je souhaite avoir une table de travail pour pouvoir afficher son contenu durant les ajouts modification et suppression, et ce dans une admin.

coté visiteur, il faut aussi que j'affiche ce contenu mais j'aimerai que cela soit fait de manière à ce que, lorsque l'on travail sur l table coté admin, les modifictions ne soit pas vue tant que non finalisé.

il faut donc que j'ai une table de travail coté admin et une autre identique coté visiteur. j'aimerai juste que une fois le travail fini coté admin, on remplace la table visiteur par une copie de celle de l'admin.

les deux condition à remplir sont donc:
- savoir comment faire ce remplacement de table
- faire cette requete de remplacement de façon à ce qu'elle prenne effet lorsque personne ne consulte la table coté visiteur

si quelqu'un voit une faon de faire cette requete ;)

par ouckileou » 12 avr. 2007, 12:50

Tu as la possibilité de faire un INSERT - SELECT, regarde dans le manuel.

Maintenant, est-ce que ça convient à ce que tu veux, je ne sais pas, il faurait plus de détails. Généralement ce genre de manoeuvres fait un peu bidouillage, pour masquer une conception un peu bizarre...

Pourquoi est-ce que tu as besoin de faire ça ?

copie d'une table vers une aute

par BeRoots » 12 avr. 2007, 11:25

salut à tous :)

je cherche à copier l'integralité d'une table "privé" vers une autre table "publique" et ce lorsque personne ne la consulte...

comment puis je faire?

merci d'avnce pour vos conseil ;)