Bonjour,
J'ai une demande un peu spéciale à laquelle je n'ai pas pu répondre.
Comment récupérer la requête SQL exécutée en chaine de caractères dans le trigger pour enregistrer l'action demandée comme action à faire ultérieurement ?
Explication et Mise en situation :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 CREATE FUNCTION fctMaFonction() RETURNS BIT AS BEGIN DECLARE @toto BIGINT SELECT @toto = COUNT(*) FROM tblUneAutreTable RETURN IIF(@toto > 10, 0, 1) END; GO CREATE TABLE tblSQLLater ( ID UNIQUEIDENTIFIER DEFAULT NEWID(), nvcSQL NVARCHAR(MAX) ) CREATE TABLE tblMaTable ( ID UNIQUEIDENTIFIER DEFAULT NEWID(), intData INT ) GO CREATE TRIGGER trgMaTable_AI ON tblMaTable AFTER INSERT AS IF fctMaFonction() = 0 BEGIN INSERT INTO tblSQLLater (nvcSQL) VALUES (???) RAISERROR(N'La base de données est en cours de traitement, votre demande sera traitée automatiquement ultérieurement. Il n''est pas nécessaire de la refaire.') END GO
Ce code est fait à la volée pour simplifier le code réel et se concentrer sur le besoin.
Est-ce qu'il est possible de récupérer l'instruction SQL qui a lancé le trigger pour l'enregistrer et l'exécuter plus tard ?
Merci pour vos réponses.
P.S. : Je voudrais faire ça sur toutes mes tables ou presque, donc il n'est pas envisagé d'écrire chaque requête à la mano en chaine de caractères...
Partager