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 :

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')
j'aimerai qu'en retour dans ma table "table_log" la valeur "TOTO" soit presente.


Voici mon trigger

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'
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
 
 
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)
merci pour votre aide