Overview:
In my scenario a user uploads an excel file that needs to be written into database, I am allocating each uploaded file a batch_id   that batch_id is written in last column of each row of my table as shown in these pictures  [![File of User 1][1]][1]


[![enter image description here][2]][2]

With the help of this batch_id column I will be able to segregate that which rows belong to which document.(for example: if batch_id=1 than these 1000  rows belongs to document 1)

Problem:
Consider two users user1 and user2 executing this stored procedure at the same time while Stored Procedure  is writing batch_id=1 in all the rows which belong to document1,at the same time rows belonging to  document2 will gets inserted thus causing a conflict wether to write batch_id=1 or batch_id=2 in the rest of remaining rows.


Imperfect  Solution:
To Execute Stored Procedure on one document at a time,when its done execute it on document 2 but this will let the user to wait until the current execution finishes which i don't want to  happen.


UPDATE:::::::::::::::

The batch_id value is coming from another table MASTER_CDT in this table batch_id is primary key and auto incremented, when a document gets uploaded first a batch_id is generated this batch_id is then inserted into rows corresponding to that batch, the problem is while batch_id(consider batch_id=1) is getting written into current batch rows if another user uploads document then batch_id is changed to value 2 while rows regarding batch 1 are still missing batch_id value but now batch_id=2 will be written to them therefore causing trouble.  
 


  [1]: https://i.sstatic.net/Agg6I.png
  [2]: https://i.sstatic.net/WIlwL.png