Je débute en trigger et je suis pas trés douer...
J'aimerais une petite aide pour optimiser mon trigger qui fonctionne mais qui est pas trés beau a voir...
Notament l'utilisation de trés nombreuses variables pour stocker les données avant de faire mon INSERT Final dans TCOM_CDEE

Voici mon super trigger pas du tout optimisé :

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
24
25
26
27
28
29
 
 
CREATE TRIGGER TG_INS_SIA12_ENTETE_ECH ON [dbo].[F_DOCENTETE] 
FOR INSERT
AS
	DECLARE @idAuto int, @IdComm int, @NumLiv int
	DECLARE @NTiers varchar(17), @NomComm varchar(35), @NCom varchar(12)
	DECLARE @dateComm datetime, @DateLivTot datetime, @DateLivTard datetime
 
	BEGIN
		-- On récupére les données qui nous interresse sur la ligne que l'on viens d'insérer
		SELECT @NCom = DO_Piece, @NTiers = DO_Tiers, @dateComm = DO_Date, @DateLivTot = DO_DateLivr, @DateLivTard = Date_livraison_Maxi, @IdComm = RE_No, @NumLiv = Li_No  FROM INSERTED
 
		-- On récupére le nom du commercial grace à son id
		SELECT @NomComm = RE_Nom FROM F_REPRESENT WHERE RE_No = @IdComm
 
		-- On insére dans T_Echanges la ligne de l'échange.
		INSERT INTO [T_ECHANGES] (NOM, ORIGINE, DESTINATION, DATE_CREATION, STATUT )  VALUES ('COMMANDE', 'SAGE', 'PRODALIA', GetDate(), 'PRET')
		-- Permet de récupérer le numéro qui a été incrémenter automatiquement
		SELECT @idAuto = @@IDENTITY FROM INSERTED
 
		-- Récupérer les données sur l'adresse de la livraison dans la table  F_LIVRAISON
		DECLARE @Code_Liv varchar(17), @libelle_Liv varchar(50), @adress_Liv varchar(35), @comple_Liv varchar(35),  @cp_Liv varchar(5), @ville_liv varchar(35),  @pays_Liv varchar(50), @tel_Liv varchar(15), @fax_Liv varchar(15), @mail_Liv varchar(50)
		SELECT @Code_Liv = CT_Num, @libelle_Liv = LI_INTITULE, @adress_Liv = LI_ADRESSE, @comple_Liv = LI_COMPLEMENT, @cp_Liv = LI_CODEPOSTAL, @ville_liv = LI_VILLE, @pays_Liv = LI_PAYS, @tel_Liv = LI_TELEPHONE, @fax_Liv = LI_TELECOPIE, @mail_Liv = LI_EMAIL FROM F_LIVRAISON WHERE LI_No = @NumLiv
 
		-- On insére dans TCOM_CDEE l'entete de la facture
		INSERT INTO [TCOM_CDEE] (IDENTIFIANT, ACTION_ECHANGE, NO_COMMANDE, CODE_CLIENT, LIBELLE_CLIENT, ADRESSE_CLIENT, COMPLEMENT_ADRESSE, CODE_POSTAL_CLIENT, VILLE_CLIENT, PAYS_CLIENT, TELEPHONE, FAX, EMAIL, CODE_SITE, LIBELLE_SITE, ADRESSE_SITE, COMPLEMENT_ADRESSE_SITE, CODE_POSTAL_SITE, VILLE_SITE, PAYS_SITE, TELEPHONE_SITE, FAX_SITE, EMAIL_SITE, Date_commande, Date_livraison_tot, Date_livraison_tard, Representant_code, Representant_nom )
			SELECT @idAuto, 'A', @NCom, @NTiers, CT_INTITULE, CT_ADRESSE, CT_COMPLEMENT, CT_CODEPOSTAL, CT_VILLE, CT_PAYS, CT_TELEPHONE, CT_TELECOPIE, CT_EMAIL, @Code_Liv, @libelle_Liv, @adress_Liv, @comple_Liv, @cp_Liv, @ville_liv, @pays_Liv, @tel_Liv, @fax_Liv,@mail_Liv, @dateComm, @DateLivTot, @DateLivTard, @IdComm, @NomComm  FROM F_COMPTET WHERE CT_Num = @NTiers
	END