Création de Déclencheurs pour ajouter les données dans la Table d'audits
Supposons que nous avons 50 tables
dans une base de données et nous voulons capturer toutes les modifications (ancienne valeur et la nouvelle valeur de colonnes), à travers les colonnes de chaque table. Une table d'audit sera là, qui ont au-dessous des colonnes:
ID
, Server_Name
, User_Name
, Date_Time
, Table_Name
, Column_Name
, Old_Value
, New_Value
Il y aura une table d'audit qui permettra de saisir les changements de toutes les tables de la base de données. Je crois que nous pouvons créer des déclencheurs pour chaque table de la base de données. Mais s'il vous plaît laissez-moi savoir comment toutes les données seront ajoutés dans une table d'audit. Si vous pouvez me fournir un exemple de travail qui vous sera très utile.
Merci et salutations,
Partha
OriginalL'auteur user2160151 | 2013-03-12
Vous devez vous connecter pour publier un commentaire.
Je peux vous fournir une sorte d'algorithme de travailler sur, la plupart du sol le travail est déjà fait:
C'est peut être une table d'audit, devrait ajouter une colonne timestamp que de la date de modification ou plus d'infos selon vos besoins:
Il peut être utilisé comme un déclenchement de référence; à noter qu'il y aura un déclencheur pour chaque table:
Vous pouvez avoir plusieurs instruction insert, une pour chaque colonne. Si vous voulez mettre une restriction de ne pas insérer les données qui n'est pas changé, vous pouvez faire la modification suivante dans le déclenchement:
Savoir si plus d'information est nécessaire.
lorsque vous définissez l'élément déclencheur de la table, de ne pas vous avoir la colonne détails avec vous. Lorsque vous insérez dans un audit de l'utilisation du nom de la colonne.
mais ..supposons que prendre un scénario dans lequel je stocke l'action de la vérification de la table signifie qu'il y a une colonne d'action et d'insertion / mise à jour prenom si l'utilisateur de mise à jour nom de la première dans ce cas , comment je sais que la colonne est mise à jour par l'utilisateur
Lorsque vous recherchez des données modifie la façon dont vous le faites, ANCIEN/NOUVEAU.<column_name>, vous pouvez utiliser le même column_name comme une constante.
Vous avez certainement des différents types de données. Vous ne pouvez pas stocker ensemble avec VARCHAR
OriginalL'auteur Himanshu Bhardwaj
J'ai passé quelques jours à venir avec une Procédure Stockée automatiquement/créer dynamiquement mise à JOUR /SUPPRIMER des déclencheurs dans MariaDB (Fonctionne avec v 10.1.9) l'audit de tous les changements sur les mises à jour et des suppressions. La solution utilise la INFORMATION_SCHEMA pour construire automatiquement une vérification de déclenchement pour chacune de vos tables. Sur mise à Jour seulement changé les colonnes sont vérifiées, alors que sur supprimer tout l'historique est conservé dans la vérification.
Dans l'exemple ci-dessous, nous créons une base de données de test avec deux tables, tb_company et tb_auditdetail qui va contenir notre journal d'audit.
L'exemple ci-dessus prend pour acquis que chacune de vos tables, vous avez 5 colonnes: créé, createdby, mise à jour, updatedby, record_version.
Cependant, vous pouvez personnaliser la Procédure Stockée sp_maketrigger différemment pour répondre à vos besoins. La sp est également sujette à des améliorations et des améliorations.
OriginalL'auteur Leonard Tonna
vous pouvez utiliser ce déclencheur, mais si c'est pour chaque table pour moi c'est le meilleur parce que vous contrôlez si quelque chose change dans la structure de la table et n'affecte pas les autres, vous pouvez utiliser l'exemple de ce repo:
https://github.com/areliszxz/mysql_audit
OriginalL'auteur Arelis_xzx