tsql - trigger only fired one when i use insert into select -


create trigger tg_bpb_cons_no on dbo.t_bpb_cons insert /* fungsi  : membuat document bon permintaan barang maintenance number secara otomatis` author  : ryan */ declare @new_doc_no varchar(20) declare @doc_no varchar(20) --declare @doc_no bigint --update doc no select @doc_no = max(cast(substring(doc_no,9,13) integer)) t_bpb_cons if (@doc_no null) begin set @doc_no = 0 end print @doc_no select @new_doc_no = cast(@doc_no+1 varchar(20)) select @new_doc_no = left('bpb/con/',8+len(@new_doc_no))+@new_doc_no update t_bpb_cons set doc_no=@new_doc_no [id]=(select max([id]) id t_bpb_cons) 

it works fine single record inserted, used insert tbl select tblvalue anothertable insert multiple record it's affected on last record... why ??

insert statement (even having multiple rows) treated single operation, have handle inserted values in trigger code.

try :

create trigger tg_bpb_cons_no on dbo.t_bpb_cons insert /* fungsi  : membuat document bon permintaan barang maintenance number secara otomatis` author  : ryan */ declare @new_doc_no varchar(20) declare @doc_no int declare @row_inserted int  select @row_inserted = count(*) inserted --declare @doc_no bigint --update doc no select @doc_no = max(cast(substring(doc_no,9,13) integer)) t_bpb_cons if (@doc_no null) begin set @doc_no = 0 end while @doc_no < @doc_no + @row_inserted begin     print @doc_no     select @new_doc_no = cast(@doc_no+1 varchar(20))     select @new_doc_no = left('bpb/con/',8+len(@new_doc_no))+@new_doc_no     update t_bpb_cons set doc_no=@new_doc_no [id] = (select max([id]) id inserted)     set @doc_no = @doc_no + 1 end 

Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -