2010-08-26 6 views
1

Je voudrais implémenter un système de versionnage de base dans une table MySQL. Imaginons une table simple avec 2 colonnes: nom (pk) et prix. Je pensais simplement ajouter une colonne «version» et l'ajouter à la clé primaire. Ensuite, j'attraperais tous les UPDATE et ferais un insert à la place, en incrémentant le numéro de version.Mysql trigger pour faire un INSERT au lieu d'un UPDATE

D'abord, est-ce possible? Puis-je effectuer un trigger AVANT la MISE A JOUR et faire une insertion et annuler la MISE A JOUR? Quelle serait la syntaxe? Deuxièmement, cette idée est-elle correcte? Comment allez-vous y parvenir?

Merci pour votre aide, Barth

Répondre

2

Vous ne pouvez pas annuler la mise à jour. Je garderais la table avec des versions séparément de la table "principale", et j'insérerais dans cette table le nouvel enregistrement quand la table principale est mise à jour. Ou encore plus facile - utilisez insert avec le nouveau numéro de version au lieu de la mise à jour sans aucun déclencheur.

+0

Merci pour votre réponse. Je vais aller à une table séparée. Je préfère ne pas compter sur les personnes utilisant l'insertion avec le nouveau numéro de version, c'est sujet à erreur. – Barth

+0

D'accord. Si vous n'êtes pas le propriétaire exclusif du code, une table distincte est plus sûre. – spbfox

Questions connexes