MYSQL Déclencher la mise à Jour de Copier Toute la Ligne
Je suis en train de créer un déclencheur pour copier l'intégralité d'une ligne à une table d'audit sur toute mise à JOUR.
J'ai 2 tables
Frequencies
et Frequencies_Audit
C'est mon déclencheur.
create trigger auditlog
before update on frequencies
for each row insert into
frequencies_audit select frequencies.*;
Quand je l'ai mise à jour de l'enregistrement-je obtenir de l'Inconnu Table frequencies
.
Je ne veux pas avoir à l'entrer à chaque nom de champ séparément, si possible, car nous sommes constamment à l'ajout de colonnes dans la base de données.
OriginalL'auteur JeffD | 2012-07-25
Vous devez vous connecter pour publier un commentaire.
Plutôt que
BEFORE UPDATE
, vous pouvez écrireAFTER UPDATE
déclencheur comme suit ::freqId est juste un nom de colonne Id. Remplacer par le nom de la colonne Id dans votre tableau des fréquences.
Note, vous devez remplacer le séparateur si vous utilisez le
BEGIN ... END
de syntaxe sur les déclencheursOriginalL'auteur hemu
Vous pouvez essayer ce
Parce que dans MYSQL si vous avez écrit
select TableName.*
puis il retourne toujours une erreurUnknown table TableName
.Peut-être cela vous aide.
Non, il n'est pas possible si les deux structures de la table sont les mêmes.veuillez consulter le tableau des structures.
la structure de la table est identique. J'ai fait une copie de la table sans les enregistrements.
attendez, je vais donner quelques un exemple de code.
j'ai fait ce déclencheur et son travail GOUTTE fine GÂCHETTE SI il EXISTE
auditlog
// CREATE TRIGGERauditlog
AVANT la mise à JOUR SURquestions
POUR CHAQUE LIGNE insérer dans questions_old sélectionnez * à partir de questions //OriginalL'auteur Ajay Kadyan