ユーザーが実行しているときに、一意のフィールドを持つテーブルに挿入したい。
例:
- b は一意のフィールドです。
- 私のC#コードでは、これを行っています。
- get_max(b);
- y = b+1;
- table1 (a、b、c、d) 値 (@x、@y、@z、@t) に挿入します。
- しかし、ユーザーは挿入したいときにこのテーブルを使用しています。そのため、「b」フィールドの重複レコード エラーが表示されます。
挿入する前にいくつかのレコードを割り当てることはできますか、または何ができますか?
ユーザーが実行しているときに、一意のフィールドを持つテーブルに挿入したい。
例:
挿入する前にいくつかのレコードを割り当てることはできますか、または何ができますか?
挿入する前にレコードを割り当てることはできません。テーブルをロックするか、その外側に再試行ロジックがある 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
}
}