[解決済み] try catch ブロックで @@trancount > 0 を確認する必要があるのはどのような場合ですか?
2022-02-04 16:08:49
質問
時々、次のようなコード・スニペットを見かけます。このとき
if @@trancount > 0
が必要です。
begin try
? 両方ですか?それとも、チェック前にロールバックされることを想定して、常にチェックするのが安全な方法(ベストプラクティス)なのでしょうか?
begin tran
begin try
... just several lines of sql ...
if @@trancount > 0 commit tran
end try
begin catch
if @@trancount > 0 rollback tran
end catch
解決方法は?
を扱う場合、いくつかのシナリオを考えることができます。
@@trancount
:
- 現在のトランザクションが別のストアドプロシージャから呼び出され、そのストアドプロシージャが 独自のトランザクション
- 現在のトランザクションが、独自のメソッドを持つ .NET コードによって呼び出された。 トランザクション
- 現在のトランザクションが唯一のトランザクションである
私は、Remus Rusanuの 例外処理とネストされたトランザクション は、これらの可能性をすべて処理します。
関連
-
[解決済み】フラットファイルの日付カラムで「キャスト指定に無効な文字値があります」を修正する方法とは?
-
[解決済み] 更新時のSqlエラー : UPDATE ステートメントが FOREIGN KEY 制約と競合しています。
-
[解決済み] データベース 'tempdb' で CREATE TABLE 権限が拒否されました。
-
[解決済み] SQL Server データベース復元エラー: 指定されたキャストは無効です。(SqlManagerUI)
-
[解決済み] MS SQL Server 2005で行のSNoを自動的に設定する方法は?
-
[解決済み] 分散型トランザクションを開始できない
-
[解決済み] データ損失の可能性があるため、スキーマの更新を終了します。
-
[解決済み] Try-catchは私のコードをスピードアップさせるか?
-
[解決済み] なぜすべてのブロックを "try"-"catch "で包んではいけないのですか?
-
[解決済み] 警告をtry/catchすることはできますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 式をデータ型datetimeに変換する際に算術オーバーフローエラーが発生する。(日付と時刻の表示中に...)
-
[解決済み] 各GROUP BY式は、外部参照でない列を少なくとも1つ含む必要があります。
-
[解決済み] MS SQL Server 2005で行のSNoを自動的に設定する方法は?
-
[解決済み] 分散型トランザクションを開始できない
-
[解決済み] T-SQL XOR 演算子
-
[解決済み] テーブルが存在しない場合、"Table 'dbo.Foo' already exists." というエラーはどのように解決すればよいですか?
-
[解決済み] SQL Server: caseステートメントでUniqueIdentifierを文字列に変換する
-
[解決済み] create関数は、バッチ内の唯一のステートメントでなければなりません。
-
[解決済み] SQL Server : varchar を INT に変換する。
-
[解決済み] スカラー変数を宣言する必要があります。