У меня есть три таблицы и три хранимые процедуры соответственно для вставки/обновления записей в этих таблицах. Первая таблица содержит первичный ключ, RecNo, который автоматически генерируется.Настройка уровня изоляции Serializable в хранимой процедуре
Около 1000 пользователей вводят записи в эти таблицы одновременно из разных географических мест. Я замечаю, что иногда вставки во второй или третьей таблице пропущены, даже когда вставки были успешно выполнены, и никаких предупреждений не было создано.
Я хочу знать, как автоматически генерируемый столбец первичного ключа обрабатывает параллельные проблемы. Нужно ли устанавливать уровень изоляции SERIALIZABLE поверх каждой хранимой процедуры?
Я использую SQL Server 2008 R2 Express с уровнем изоляции по умолчанию, то есть READ COMMITTED.
Один из моей хранимой процедуры выглядит следующим образом:
ALTER PROCEDURE [dbo].[pheSch_CreateOrUpdateTubewellDetails]
-- Add the parameters for the stored procedure here
@TwTaskFlag nvarchar(6),
@TwParameterID bigint,
@SerialNumber bigint,
@TotalNum int,
@TwType nvarchar(50),
@Depth nvarchar(60),
@Diameter nvarchar(60),
@WaterCapacity nvarchar(60),
@PS nvarchar(15),
@PSNum int,
@PSType nvarchar(60),
@Remarks nvarchar(80)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
BEGIN
UPDATE tw_details
SET
TotalNum = @TotalNum,
TwType = @TwType,
Depth = @Depth,
Diameter = @Diameter,
WaterCapacity = @WaterCapacity,
PS = @PS,
PSNum = @PSNum,
PSType = @PSType,
Remarks = @Remarks
WHERE twpid = @TwParameterID;
END
END
В вашем вопросе упоминается несколько вставок, но код показывает только одно обновление .... – RickNZ