-1

ユーザーが実行しているときに、一意のフィールドを持つテーブルに挿入したい。
例:

  • b は一意のフィールドです。
  • 私のC#コードでは、これを行っています。
  • get_max(b);
  • y = b+1;
  • table1 (a、b、c、d) 値 (@x、@y、@z、@t) に挿入します。
  • しかし、ユーザーは挿入したいときにこのテーブルを使用しています。そのため、「b」フィールドの重複レコード エラーが表示されます。

挿入する前にいくつかのレコードを割り当てることはできますか、または何ができますか?

4

1 に答える 1

2

挿入する前にレコードを割り当てることはできません。テーブルをロックするか、その外側に再試行ロジックがある try catch ブロックに挿入を配置する必要があります。

例えば;

int maxRetries = 3;

for (int i = 0; i < maxRetries; i++)
}
    try
    {
        //insert
        break;
    }
    catch (Exception e)
    {
        y = get_max(b) + 1; //get the max again since the failure is due to
        // another record incrementing that value
        if (i == maxRetries - 1)
           throw e;
        // all retries failed so it's time for that exception to bubble up
    }
}   
于 2013-05-03T21:18:31.933 に答える