Trigger SQL Server avec Clause Where

Fermé
Tekkeur Messages postés 2 Date d'inscription mercredi 31 mai 2017 Statut Membre Dernière intervention 1 juin 2017 - 31 mai 2017 à 14:31
Tekkeur Messages postés 2 Date d'inscription mercredi 31 mai 2017 Statut Membre Dernière intervention 1 juin 2017 - 1 juin 2017 à 12:27
Bonjour,

Je souhaiterai avoir votre aide pour créer un trigger sur SQL Server.
Ma situation :
J’ai une table dbo.ACTIONS, avec les colonnes : Action_ID, Person_ID, Pause_Code, Next_state.
• J’aimerai créer un trigger qui envoie automatiquement une notification par mail à chaque fois qu’il y aura une ligne ajoutée dans la table dbo.ACTIONS dont la Pause_Code=2. Si le Pause_code !=2, je n’envoie pas une notification mail.

• Deuxième point, 2min après l’insertion de la ligne, si le Next_State est toujours null (Next_State est initialisé à Null au moment de l’insertion), j’envoie une autre notification, dans le cas contraire, je n’ai pas besoin d’envoyer une notification (cas où Next_State not null)
Merci d’avance pour votre aide.
A voir également:

1 réponse

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
1 juin 2017 à 12:22
Bonjour,

Pour le premier point, tu peux faire un truc comme ça :
CREATE TRIGGER envoie_mail_action ON actions
AFTER INSERT
AS
IF EXISTS (SELECT 1 FROM INSERTED WHERE Pause_Code = 2)
BEGIN
    -- Envoyer la mail ici, avec sp_send_dbmail
END
GO


Pour le deuxième point, plutôt que quelque chose qui se déclenche deux minutes après l'insertion, je te propose plutôt un job sql qui va être exécuté toutes les 2 minutes et requêter les lignes dont Next_State est null.
Si ta table Action est grosse, tu as peut-être intérêt à utiliser une table dédiée aux lignes qui n'ont pas encore fait l'objet d'un envoi de mail, dans laquelle tu insères les Action_Id dans le trigger précédent, et que tu supprimes sitôt que tu n'en as plus besoin.

Xavier
0
Tekkeur Messages postés 2 Date d'inscription mercredi 31 mai 2017 Statut Membre Dernière intervention 1 juin 2017
1 juin 2017 à 12:27
Merci Xavier, ça m'a bcp aidé.
0