2009-12-11 5 views
2

Je veux tout verrouiller - complètement. Très simple. Juste empêcher les choses de changer !! Est-ce que cela fonctionnera?Comment verrouiller une base de données MySQL pour écrire/lire/mettre à jour/supprimer ... tout est verrouillé?

use mydatabase; 
flush tables with read lock; 

...

unlock tables; 

Edit: Mais, il doit être disponible pour la réplication.

+1

pourquoi voulez-vous faire cela? répondre à cette question nous aidera à vous trouver la meilleure solution pour ce que vous essayez de faire. – longneck

Répondre

5

Ne serait-il pas plus simple d'ajuster la sécurité pour le compte d'utilisateur accédant à la base de données afin qu'il ait seulement un accès en lecture?

+0

j'aime cette approche – IEnumerator

2

Ceci ferme toutes les tables ouvertes et verrouille toutes les tables pour toutes les bases de données avec un verrou de lecture jusqu'à ce que vous exécutiez UNLOCK TABLES.

+0

Qu'est-ce que cela signifie ... accomplit-elle ce que je veux? – TIMEX

+0

peut-être. les clients qui veulent écrire vont décrocher jusqu'à ce que la table soit déverrouillée ou qu'ils expirent. en outre, les clients qui veulent lire après un stand d'écrivain vont également décrocher. Si vous souhaitez que toutes les écritures soient erronées, vous devez modifier les autorisations utilisateur. – longneck

+0

je suis d'accord = vous devriez aller avec des autorisations en lecture seule pour le nom d'utilisateur accédant aux données. Ma suggestion fonctionne dans la même transaction. – IEnumerator