T-SQL での存在チェックによるアトミック行挿入
要件は、行をアトミックに更新する T-SQL ストアド プロシージャを開発することです。テーブルの中。行が存在しない場合は、信頼性と原子性を確保するためにトランザクション内に行を挿入する必要があります。行が既に存在するかどうかを判断するには、@@rowcount を効果的に利用する必要があります。
推奨される実装
提案された内容を組み込んだコードの修正バージョンを次に示します。アプローチ:
BEGIN TRANSACTION; IF EXISTS (SELECT 1 FROM Bookings WHERE FlightId = @Id) BEGIN UPDATE Bookings SET TicketsBooked = TicketsBooked + @TicketsToBook WHERE FlightId = @Id AND TicketsMax >= (TicketsBooked + @TicketsToBook); END ELSE BEGIN INSERT INTO Bookings ... (omitted); END /* Remaining transaction logic */ COMMIT TRANSACTION; IF @@ERROR = 0 BEGIN RETURN TRUE; -- Return success if no errors occurred END ELSE BEGIN RETURN FALSE; -- Return failure in case of errors END
説明:
以上が@@rowcount を使用して T-SQL で行をアトミックに挿入または更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。