Bonjour,
voila je suis debutant en trigger cependant j'ai fait un trigger qui lors d'un INSERT INTO dans une table le trigger alimente une autre table !
Je fais mes test dans la base "pubs" sous sql server
J'ai donc crée une table "table_log".
Le but etait ici de recuperer le nt_username, la date et la commande executé de la personne qui effectue un INSERT INTO dans la table "authors".
Cependant j'ai ajouté a ma table "table_log" le champs "fname" car j'aimerai que dans la table "table_log" il y ai par exemple le detail de l'insertion puisque la table sysprocesses ne renvoi que la cmd soit "INSERT".
un ptit exemple pour aider a la comprehension car pas sur que mon texte soit clair :
lors d'une insertion dans la table "authors" comme ce qui suit :
j'aimerai qu'en retour dans ma table "table_log" la valeur "TOTO" soit presente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 insert into authors values('123-45-6790','TOTO','TITI','123 456-7890','12 rue toto','noisy','93','93130','1')
Voici mon trigger
et voici ma table_log
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 CREATE TRIGGER trc_dlt ON authors FOR INSERT AS begin INSERT INTO guest.table_log SELECT spid, ecid, STATUS, loginame=rtrim(loginame), hostname, blocked=convert(char(5),blocked), dbid = db_id(), cmd='INSERT', nt_username, login_time=current_timestamp FROM master..sysprocesses WHERE dbid=db_id() AND cmd<>'AWAITING COMMAND'
merci pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE TABLE table_log (spid int, ecid int, STATUS nchar(30), loginame varchar(50), hostname varchar(50), blocked smallint, dbid smallint, cmd varchar(50), nt_username varchar(50), login_time datetime, fname varchar(50)
Partager