/ / surveillance de la table mysql pour les commandes et stockage de l'historique des commandes - php, mysql, sql

suivi de la table mysql pour les commandes et stockage de l'historique des commandes - php, mysql, sql

  1. J'ai un site Web lorsque l'utilisateur peut cliquer sur "commander" et sa commande est enregistrée dans le tableau des commandes.
  2. La table des commandes a 3 champs: id, user_id, book_id.

J'ai besoin d'un script qui surveillera les modifications dans la table des commandes - si des commandes apparaissent, il les lira, "exécutera" et supprimera de la table des commandes.

Comment puis-je le faire efficacement? Je n'ai jamais rien fait de tel auparavant - j'ai pensé à un script php qui sera exécuté à certains intervalles (10-15 secondes - il doit être rapide) et qui lira la table des commandes. Mais ensuite, j'ai pensé que je devais conserver l'historique des commandes - et il y a une deuxième question - dois-je créer un deuxième tableau pour l'historique des commandes ou simplement ajouter un champ tel que "terminé" au tableau des commandes? Je pose ces deux questions à la fois car elles sont corrélées. Peut-être que lorsque ma table de commandes contiendra également des commandes terminées, la recherche effectuée par mon script sera inefficace. Je cherche la meilleure solution.

J'utilise la base de données MySQL 5.0 ...

---------- modifier

Je ne peux pas utiliser de déclencheurs - je dois exécuter un script php pour traiter les commandes quand elles apparaissent dans la table des commandes!

Réponses:

2 pour la réponse № 1

Vous avez besoin d'un déclencheur. Quelque chose comme ça va marcher.

create trigger newOrderTrigger after insert on order_table for each row
//you order execution code goes here

Voir Documentation MySQL Trigger. J'ai aussi trouvé ça Didacticiel utile.

Quant à votre deuxième question, cela dépend de votreexigences. Si vous avez besoin d'un historique complet pouvant être audité, vous devez probablement copier les modifications dans une nouvelle table. Si vous ne le faites pas, ajouter un order_status et changer la valeur de open à complete représente moins de travail.