i need exemple de mise à jour SQL Server Trigger, Récupère les champs avant et après mise à jour pour exécuter statments SQL dans une autre tableMise à jour SQL Server Trigger, Récupère les champs avant et après mise à jour
Répondre
SQL Server déclenche ont accès à 2 tables « magiques » qui contiennent une ligne pour chaque ligne insérée, mise à jour ou supprimé dans la déclaration qui a provoqué le déclenchement d'exécuter.
Pour trouver toutes les lignes insérées sur une instruction INSERT:
select * from inserted
Pour toutes les lignes supprimées sur une instruction DELETE:
select * from deleted
Pour les instructions UPDATE, chaque ligne mise à jour sera présent dans les tableaux insérés et supprimés. La table insérée conservera la nouvelle valeur de la ligne après l'instruction update, et la table supprimée conservera l'ancienne valeur de la ligne juste avant l'instruction update. Joignez-vous entre les deux tableaux pour obtenir ce dont vous avez besoin:
select i.*, d.*
from inserted i
join deleted d on (i.id = d.id)
vous voulez que le déclencheur spécial supprimé et tables insérées. De MSDN:
Dans déclencheurs DML, les tableaux insérés et supprimés sont principalement utilisés pour effectuer les opérations suivantes: Prolonger l'intégrité référentielle entre les tables. Insérer ou mettre à jour des données dans les tables de base sous-jacentes à une vue. Tester les erreurs et passer à l'action en fonction de l'erreur. Recherchez la différence entre l'état d'une table avant et après une modification de données et effectuez des actions en fonction de cette différence. La table supprimée stocke les copies des lignes affectées lors des instructions DELETE et UPDATE. Lors de l'exécution d'une instruction DELETE ou UPDATE, les lignes sont supprimées de la table de trigger et transférées dans la table supprimée. La table supprimée et la table de déclenchement n'ont généralement pas de lignes en commun. La table insérée stocke les copies des lignes affectées au cours des instructions INSERT et UPDATE. Lors d'une transaction d'insertion ou de mise à jour, de nouvelles lignes sont ajoutées à la table insérée et à la table de déclenchement. Les lignes de la table insérée sont des copies des nouvelles lignes de la table de déclenchement.
Ce lien est mort. Pouvez-vous le mettre à jour? –
@FedericoTraiman, le lien semble fonctionner pour moi, figuré un lien msdn ne serait probablement pas mort. J'ai ajouté une partie du contenu au corps de la réponse. –
C'est vivant maintenant! Merci –
- 1. sql server (mise à jour)
- 2. SQL Trigger récursif mise à jour
- 3. MySQL après insertion et après mise à jour déclencheur
- 4. MISE À JOUR avant INSERT (Oracle)
- 5. Mise à jour SQL par ligne
- 6. Oracle Trigger Mise à jour d'un champ sur une insertion ou une mise à jour
- 7. Linq à SQL mise à jour partielle?
- 8. Sql Server Ignorer les erreurs de mise à jour
- 9. Déclencheur de mise à jour SQL Server pour les mises à jour groupées
- 10. Mise à jour SQL annuler
- 11. sql pour détecter les champs modifiés dans le déclencheur de mise à jour (SQL Server 2005)?
- 12. mise à jour de SQL et insérez
- 13. Curseur T-SQL et mise à jour
- 14. Mise à jour sélective des champs
- 15. Mise à jour avant la capture d'écran
- 16. SQL mise à jour de requête
- 17. Verrouiller l'enregistrement avant la mise à jour?
- 18. mise à jour datagridview
- 19. déclaration de mise à jour de SQL Server à Oracle
- 20. Mise à jour des champs similaires dans le serveur SQL
- 21. Aide SQL: Mise à jour d'un champ
- 22. NHibernate - Mise à jour inattendue sans mise à jour explicite
- 23. Mise à jour de SQL Server ne mettant pas à jour les nombres décimaux
- 24. Mise à jour django - mise à jour de la logique des champs obligatoires déjà définis
- 25. Mise à jour et fonction
- 26. Mise à jour SQL à l'aide de
- 27. SqlDataAdapter Mise à jour
- 28. ASMX Web Mise à jour de référence ne Service après retour Mise à jour Type
- 29. mise à jour DTree
- 30. MISE À JOUR MySQL - mise à jour sélective
+1 merci pour le point sur les lignes de mise à jour étant présents dans les deux tableaux supprimés et insérés. – mdma
Autant que j'aime cette solution, je tiens à souligner que _if_ la table référencée par le déclencheur n'a pas de clé primaire, l'instruction 'update' ne sera pas utile :( –
Tant qu'il y a un moyen de joindre de manière significative entre les deux tables (comme la clause WHERE de l'instruction UPDATE généralement utilisée), il sera significatif, même si la table n'a pas de clé primaire formelle. –