シナリオ:
「Test」という名前の Sql Server 2012 テーブルには 2 つのフィールドがあります。"CounterNo" と "Value" はどちらも整数です。
sq1、sq2、sq3、sq4 という名前の定義された 4 つのシーケンス オブジェクトがあります。
挿入でこれらを実行したい:
- CounterNo = 1の場合、Value = sq1の次の値
- CounterNo = 2の場合、Value = sq2の次の値
- CounterNo = 3の場合、Value = sq3の次の値
カスタム関数を作成して、値フィールドのデフォルト値として割り当てます。しかし、カスタム関数を試してみると、「シーケンスオブジェクトの次の値」がサポートされていません
別の方法は、トリガーを使用することです。そのテーブルにはすでにトリガーがあります。
挿入にストアド プロシージャを使用するのが最善の方法です。しかし、EntityFramework 5 Code-First はそれをサポートしていません。
これを達成する方法を教えてください。
(カスタム関数でそれを行う方法を教えていただければ、ここに投稿することもできます。それは私の別の質問です。)
更新: 実際には、そのテーブルには 23 のフィールドがあり、主キーも設定されています。「カウンター テーブル」を使用して、ソフトウェア側でこのカウンター値を生成しています。クライアント側でカウンター値を生成するのは良くありません。
4 つのシーケンス オブジェクトをカウンターとして使用しています。これは、さまざまな種類のレコードを表すためです。
同じレコードで同時に 4 つのカウンターを使用すると、それらすべてが次の値を生成します。関連するカウンターのみが次の値を生成し、他のカウンターは同じままである必要があります。