0

昨年のテーブルをアーカイブし、毎年の初めに新しいテーブルを作成します。毎年手動で何かを変更する必要がないように、複数年のテーブルを 1 つ持つ方法を見つけたいと思います。列は次のとおりです: 行 (一意)、日付 (プライマリ)、col1、col2、col3.. ユーザーはフォームにデータ (すべての列) を入力します。複合主キー(行、年)で年(日付)から入力される「年」列が必要でした。主キー(行、年(日付))も必要です。したがって、毎年、行 1 と新しい年から始めることができます。挿入更新トリガーを見て試してみましたが、それが答えだとは思いません。どう思いますか?これはあまりにも漠然としていますか?

4

1 に答える 1

0

私はFirebirdデータベースの1つで同様のことをしました(使用しているデータベースはわかりませんでした)。まず、自動的に生成される主キーが必要です。これにより、作業がより簡単になります。次に、1年に1つのジェネレーター、または1年に1つのフィールドを持つテーブルが必要です。

このモデルには、year(主キー)と'curvalue'の2つのフィールドを持つテーブルがあります。毎年、(2012,0)や(2013、0)などの新しいタプルを挿入します。このテーブルをクエリして、指定された年の「curvalue」フィールドの現在の値を見つけてから、curvalueフィールドをインクリメントし、挿入するタプルでインクリメントされた値を使用します。

ジェネレーターを使用すると、常に一意の番号を受け取ることが保証されます。上で書いたようにテーブルを使用すると、ある行がプロセスを開始してから別の行が到着した場合に問題が発生する可能性があります。

于 2013-01-10T11:49:43.660 に答える