これらのテーブルにレコードを挿入/更新するために、それぞれ3つのテーブルと3つのストアドプロシージャがあります。最初のテーブルには、自動生成された主キー列RecNoがあります。ストアドプロシージャのシリアライズ可能な分離レベルを設定する
約1000人のユーザーが、異なる地理的ロケーションから同時にこれらのテーブルにレコードを入力しています。挿入が正常に完了し、警告が生成されなかった場合でも、2番目または3番目の表の挿入が欠落することがあることに気づいています。
自動生成された主キー列が同時に発生する問題をどのように処理するかを知りたい。ストアドプロシージャの上に分離レベルを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
あなたの質問には複数の挿入が記載されていますが、コードには1つの更新のみが表示されます.... – RickNZ