Problème sur un trigger AFTER INSERT
Posté: Mer 8 Juin 2016 18:02
Bonjour à tous,
J'ai créé un champ d'information libre QteInitiale de type Valeur dans les lignes de document.
Pour simplifier, je veux simplement que ce champ prenne automatiquement la valeur du champ 'dl_qte' lors de l'enregistrement d'une ligne dans un bon de commande.
J'ai donc créé un trigger sur F_DOCLIGNE :
Seulement l'update ne fonctionne pas, pourtant la requete que j'affiche grace à SendMessage est bonne ... Je pense que c'est du à un 'document en cours d'utilisation', même si je n'ai aucun message qui apparait
Quelqu'un peut il me renseigner ?
SQLSERVER 2008
J'ai créé un champ d'information libre QteInitiale de type Valeur dans les lignes de document.
Pour simplifier, je veux simplement que ce champ prenne automatiquement la valeur du champ 'dl_qte' lors de l'enregistrement d'une ligne dans un bon de commande.
J'ai donc créé un trigger sur F_DOCLIGNE :
- Code: Tout sélectionner
USE [ATAI7_Copie]
GO
/****** Object: Trigger [dbo].[UpdateQteInit] Script Date: 06/08/2016 13:53:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].UpdateQteInit
ON [dbo].[F_DOCLIGNE]
AFTER INSERT
AS
BEGIN
declare @dl_no as integer
declare @do_type as integer
declare @dlqte as integer
declare @dopiece as varchar(20)
declare @txterreur as varchar(255)
select
@dl_no = DL_No,
@dopiece = do_piece,
@dlqte = dl_qte,
@do_type = do_type
from inserted
if (@do_type = 1) begin
begin try
update F_DOCLIGNE set QteInitiale = @dlqte where DL_No=@dl_no
-- Affichage de la requête
select @txterreur = 'update F_DOCLIGNE set QteInitiale = '+cast(@dlqte as varchar)+' where DL_No='+cast(@dl_no as varchar)
EXEC dbo.CB_SendMessage @@SPID, @txterreur
end try
begin catch
EXEC dbo.CB_SendMessage @@SPID, ERROR_MESSAGE
end catch;
end;
end
Seulement l'update ne fonctionne pas, pourtant la requete que j'affiche grace à SendMessage est bonne ... Je pense que c'est du à un 'document en cours d'utilisation', même si je n'ai aucun message qui apparait
Quelqu'un peut il me renseigner ?
SQLSERVER 2008