Bonjour,
Je suis débutant dans ce domaine et il y a une notion concernant les triggers que je ne comprend pas.
Concrètement, je souhaite déterminer après un insert si une personne est présente dans un annuaire. Si elle l'est, mettre à jour son numéro sinon rajouter une ligne.
J'ai lu que ce langage prend les insertions dans un ensemble, la table "inserted" et que parcourir cette table est inutile.
Dans ce cas, comment émettre une condition qui dit "si une des lignes est présente, on lance un update sinon on lance un insert sur cette ligne en particulier".
C'est le fait de ne pas mettre de boucle qui me pose problème.
Le code :
En vous remerciant,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ALTER TRIGGER [dbo].[MaJ] ON [dbo].[personnes] AFTER INSERT AS BEGIN TRY --Recherche de la personne dans l'annuaire if ((SELECT * FROM dbo.Annuaire A INNER JOIN inserted I on A.Login = I.Login WHERE inserted.Login = A.Login) = null) BEGIN --Si elle n'est pas présente, on ajoute le tuple dans l'annuaire téléphonique SET NOCOUNT ON; INSERT INTO [dbo].[Annuaire] SELECT i.Login, REPLACE(i.Tel, ' ', ''), CONCAT('3', RIGHT(REPLACE(i.Tel, ' ', ''), 4)) FROM inserted i END --Sinon on update ...
Mel
Partager