Bonjour
Alors je sais pas si ce que je vais demander est possible ou même si c'est beau (je n'en suis pas totalement sûr) mais je vais essayer de m'expliquer.
Dans ma base de donnée, il y a une table qui recense l'historique des requêtes insert/update/delete dans cette même base. Cette table contient l'id du type de requete, la date de la requete, la table ciblé par la requete, l'id de l'utilisateur l'ayant effectuée ainsi que l'id cible dans la table. Par exemple, je modifier un centre ayant pour ID 2, j'aurais donc deux dans le champs id_cible de ma requête.
J'ai fait une première fonction me permettant de renvoyer plus précisément ma table historique requête, tout va bien, maintenant, le soucis arrive. J'avais dans l'idée de faire une fonction montrant le détail de la ligne infectée par la requête faite par l'utilisateur. Le soucis est le suivant :
Je n'ai, logiquement, pas le même nombre de colonnes dans ma table centre et dans ma table utilisateurs (par exemple), du coup, je ne peux pas savoir à l'avance combien de colonnes mettre dans ma fonction de type table, ni quel nom mettre à ces colonnes. Je voudrais donc savoir si il existait une méthode dynamique pour faire cela ou non
En espérant avoir été clair...
Merci
Ps : Si cela peut aider, j'avais eu dans l'idée de faire :
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
16
17
18
19
20
21
22
23 create function DetailHistorique(@IdHistorique int) returns @DetailHistorique table ( idHistorique int identity(1,1) ) as begin declare @Table varchar(50); declare @NomIdTable varchar(50); declare @IdCible int; set @Table = (select TableCible from HistoriqueRequete where Id_Historique = @IdHistorique); set @NomIdTable = (select Nom_id_table from Tables_bdd where Nom_table = @Table); set @IdCible = (select Id_cible_requete from HistoriqueRequete where id_Historique = @IdHistorique); select * into @DetailHistorique from @Table where @NomIdTable = @IdCible; return end go
Partager