ホームページ > データベース > mysql チュートリアル > @@rowcount を使用して T-SQL で行をアトミックに挿入または更新する方法

@@rowcount を使用して T-SQL で行をアトミックに挿入または更新する方法

Patricia Arquette
リリース: 2025-01-07 12:57:40
オリジナル
521 人が閲覧しました

How to Atomically Insert or Update a Row in T-SQL Using @@rowcount?

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
ログイン後にコピー

説明:

  • IF EXISTS を使用して、指定された FlightId を持つ行が既に存在するかどうかを確認します。
  • 存在する場合は、更新操作を実行します。それ以外の場合は、挿入操作を続行します。
  • 新しいチケット数が許可される最大値を超えないように、更新ステートメントに条件を含めます。
  • @@ERROR を使用してチェックします。トランザクション中のエラーについては、それに応じて TRUE または FALSE を返します。

以上が@@rowcount を使用して T-SQL で行をアトミックに挿入または更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート