0

レコードが存在しない場合にレコードを挿入するプロセス、またはレコードが既に存在する場合にレコードを更新するプロセスを合理化する方法を理解しようとしています。私はストアド プロシージャを使用していませんが、これが最も効率的な方法かもしれません。

これが必要な実際のシナリオは、ユーザー設定/設定を私の SettingsUser テーブルに保存することです。

MS Access では、通常、指定された設定を探して DAO レコードセットをプルします。レコードセットが空に戻った場合、同じレコードセット オブジェクトで実行できる新しいレコードを追加する必要があることがわかります。一方、空でない場合は、設定の値をすぐに更新できます。理論的には、これは 2 つのデータベース操作のみです。

.NET でこれを行うための推奨される方法は何ですか?

4

1 に答える 1

2

ストアド プロシージャは確かにそれを行う簡単な方法です。そこでレコードの更新を試みることができ、レコードが変更されていない場合は追加します。例:

create procedure UpateUserSetting
  @UserId int,
  @Setting int
as

set nocount on

update UserSetting
set Setting = @Setting
where UserId = @UserId

if (@@rowcount = 0) begin

  insert into UserSetting (
    UserId, Setting
  ) values (
    @UserId, @Setting
  )

end

ストアド プロシージャがなくても同じことができます。ExecuteNonQuery次に、最初に更新を実行し、メソッドから返された影響を受ける行の数を確認し、必要に応じて別のクエリで挿入を行います。

于 2012-10-19T17:06:49.610 に答える