sql >> データベース >  >> RDS >> Sqlserver

制約チェック:TRY / CATCH vs Exists()

    私はその記事を見ましたが、失敗率が低い場合は「JFDI」パターンを好むことに注意してください。以前、これを大量のシステムで使用しました(40k行/秒)。

    Aaronのコードでは、高負荷と大量の書き込みの下で最初にテストするときに、重複を取得する可能性があります。 (ここでdba.se で説明されています )これは重要です。重複はまだ発生しますが、発生頻度は低くなります。まだ例外処理が必要であり、重複エラー(2627)をいつ無視するかを知る必要があります

    編集:別の回答でRemusによって簡潔に説明されています

    ただし、のみをテストするために別のTRY/CATCHが必要です。 重複エラーの場合

    BEGIN TRY
    
    -- stuff
    
      BEGIN TRY
         INSERT etc
      END TRY
      BEGIN CATCH
          IF ERROR_NUMBER() <> 2627
            RAISERROR etc
      END CATCH
    
    --more stuff
    
    BEGIN CATCH
        RAISERROR etc
    END CATCH
    


    1. postgresで、タイムスタンプのデフォルトのフォーマットをセッションごとまたはグローバルに設定できますか?

    2. MySQL 5.1でintをビットにキャストするにはどうすればよいですか?

    3. MySQLクロステーブルカウント(*)クエリヘルプ

    4. Restful ApiExpressPostgresデータベース