198 votes

Comment savoir quand une table MySQL a été mise à jour ?

Dans le bas de ma page, je voudrais ajouter quelque chose comme « mise à jour le xx/xx/200 x » ; avec cette date étant la dernière fois un certain mySQL table a été mise à jour. Quelle est la meilleure façon de le faire ? Y a-t-il une fonction pour récupérer la date ? Je devrais faire un accès à la base de données chaque fois que mon pied de page s’affiche ?

315voto

Alnitak Points 143355

Dans les versions de MySQL, vous pouvez utiliser l' information_schema de la base de données pour vous dire quand un autre tableau a été mis à jour:

SELECT UPDATE_TIME
FROM   information_schema.tables
WHERE  TABLE_SCHEMA = 'dbname'
   AND TABLE_NAME = 'tabname'

Cela ne veut évidemment dire l'ouverture de la connexion à la base de données.


Une alternative serait de "toucher" un fichier en particulier chaque fois que la table MySQL est mis à jour:

Sur la base de données mises à jour:

  • Ouvrez votre horodatage du fichier en O_RDRW mode
  • close nouveau

ou sinon

  • utiliser le PHP équivalent de l' utimes() fonction à modifier l'horodatage du fichier.

Sur l'affichage de la page:

  • utiliser stat() lire la date de modification du fichier.

65voto

Bill Karwin Points 204877

Je suis surpris que personne n’a suggéré la dernière fois mise à jour par rang de suivi :

Cela met à jour l’horodatage, même si nous ne le mentionne pas dans la mise à jour.

Maintenant vous pouvez rechercher le MAX() :

Certes, cela nécessite plus de stockage (4 octets par ligne de TIMESTAMP).
Mais cela fonctionne pour les tables InnoDB, qui `` ne.

61voto

Radu Maris Points 1755

Je n'ai pas de base de données information_schema, à l'aide de mysql version 4.1.16, dans ce cas, vous pouvez interroger ce:

show table status from your_database like 'your_table';.

Ce sera le retour de ces colonnes:

| Nom | Moteur | Version | Row_format | Lignes | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Classement | Checksum | Create_options | Commentaire |

Comme vous pouvez le voir il y a une colonne appelée: "Update_time" qui vous montre la dernière mise à jour de cette table.

Espérons que cela aidera quelqu'un lors de la recherche d'une solution :)

12voto

Francois Bourgeois Points 1277

Pour obtenir la liste des modifications récentes de la table, utilisez ceci :

5voto

Mikhail Points 808

Je créer un déclencheur qui intercepte toutes les mises à jour/insertions/suppressions et écrire timestamp dans la table personnalisée, quelque chose comme tablename | timestamp

Tout simplement parce que je n’aime pas l’idée de lire directement les tables système internes du serveur db

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X