1

私はこれに似たテーブルを持っています:

StockId | Dispatched
--------------------    
1234    | 0
1234    | 1

在庫dispatched = 0のあるアイテムの注文が来るまで、それはに変わります= 1

クエリを実行して場所を表示できるため、これは今日の株式の結果を生成するのに適していますdispatched ='0'。ただし、古いデータの場合は、特定の日付に在庫があったかどうかを確認したいと思います01/01/2010。これを行う簡単な方法はありますか?

ありがとう

4

1 に答える 1

3

そのようにbitまたはintフラグを使用する代わりに、dispatchedを日付または日時に変更するだけです(null可能-nullは現在の0に相当します)。次に、必要な日付比較を照会できます。

コードへの変更はかなり簡単なはずですが、ディスパッチされた列を変更できない場合は、魅力的でない代替手段がいくつかあります。

  • 日時を追跡するために、別のnull許容列を追加します。
  • null以外の日時と、現在のテーブル(クラシック1NF)を参照する外部キー制約を持つDispatchedAtテーブルを追加します。
  • システムで生成された日時を含む「アーカイブテーブル」を追加し、メインテーブルにトリガーを入力します。
  • 希望する方法で新しいテーブルを作成し、古いテーブル(同じ名前)を模倣してアプリを「だます」ための更新可能なビューを作成します。

これが単なる新機能ではなく、履歴データが非常に重要である場合(規制監査?)、トランザクションログまたはバックアップをチェックして、変更がいつ行われたかを確認できる可能性がありますが、そのようなソリューションはDBAs.SEに属します。

于 2013-02-14T16:22:31.380 に答える