Как предотвратить многократное выполнение хранимой процедуры для одного запроса?
$from_statecode = 'TN';
$this->db->query("Declare @CurrentInvoiceNo int
Execute spSetInvoiceNoStatewise '$from_statecode', @CurrentInvoiceNo output
select @CurrentInvoiceNo");
Хранимая процедура: spSetInvoiceNoStatewise, имеет следующий вид: -
CREATE Procedure [dbo].[spSetInvoiceNoStatewise]
@StateCode nvarchar(20),
@InvoiceNo int = 0 output
AS
Begin
select @InvoiceNo=invoice_no from statewise_invoice_no where invoice_state_code=@StateCode
if(@InvoiceNo is not NULL)
UPDATE statewise_invoice_no set invoice_no = @InvoiceNo + 1 where invoice_state_code = @StateCode
if(@InvoiceNo is NULL)
insert into statewise_invoice_no (invoice_state_code,invoice_no) values (@StateCode, 1);
select @InvoiceNo=invoice_no from statewise_invoice_no where invoice_state_code=@StateCode
End
Что-то не так с хранимой процедурой?
Или что можно сделать, чтобы предотвратить многократное выполнение для одного запроса?
Я просмотрел статьи, в которых предлагается " Блокировка ресурса или транзакций "