在庫管理システムで作業しており、SQL Serverに2つのテーブルがあります。SQL Serverのユニークキー違反に基づいて在庫数を増やす
製品:
PRDCTID | PRDCTCODE |PRDCTNAME| DATEADDED
---------|-----------|---------|---------
1 | 200 |VW Milk | 2017/05/15
2 | 310 |AX Milk | 2011/05/15
3 | 255 |XY Bread | 2000/05/15
4 | 115 |ZZ BREAD | 1999/05/15
製品数:
PRDCTCODE |PRDCTCOUNT| DATEUPDATED
-----------|----------|---------
200 |30 | 2017/05/15
310 |10 | 2011/05/15
255 |50 | 2000/05/15
115 |200 | 1999/05/15
私はProduct Count
テーブル内PRDCTCODE
列に外部キーとしてProducts
テーブルからPRDCTCODE
列を使用することになります。 Products
テーブルのPRDCTCODE
カラムには固有のキー制約が設定されているため、在庫内の各アイテムはProducts
テーブルに1回しか表示されません。そのあとで行うことは、実際の数量をProduct Count
テーブルに表示することです。
私が知りたいのは、次のとおりです。それはProducts
テーブル内のPRDCTCODE
列に一意キー制約の違反に基づくProduct Count
表にPRDCTCOUNT
欄に製品の数量を増加させることが可能であるとき、同一の走査項目?例えば
:インベントリに同じ牛乳の20本をスキャンするときにミルクがすでにProducts
テーブルに存在する場合、私は中PRDCTCOUNT
列を高めるためにPRDCTCODE
列に一意キー制約の違反エラーを使用することができますProduct Count
テーブル?
それは良い考えですか?意図的に違反を引き起こし、製品番号をProduct Count
テーブル全体を反復するのではなく、一致する製品を最初に検索し、PRDCTCOUNT
列の数量を読み取り、スキャンに基づいて量を増減させる売る?
アイテムがスキャンされるたびに反復処理が行われるとは限りませんが、Product Count
テーブルに100,000行があり、1000本のミルクがスキャンされている場合に?誰かがミルクのボトルをスキャンして問題を引き起こす可能性があるので、100000行を1000回繰り返す必要があると思いますか?
ユニーク制約は、新規の追加を制御します_記録_。なぜこれを使用して、追加された製品の数を制御しますか? –
最初に項目を検索するためにテーブルを検索する必要がないようにする。この違反は、PRDCTCOUNTフィールドを更新する機会を作り出し、アイテムがProduct Countテーブルに存在せず、最初に存在することを確認する必要もありません。言い換えれば、アイテムがProduct Countテーブルに存在することを意味する違反がある場合、残っている唯一のことは更新クエリです。 –
データベースは、行と列を持つフラットオブジェクトです。表は、データベースの一部であり、読み取りと書き込みを容易にするためのデータベースのビューです。したがって、データベース内の同じセルに同時に2つの異なる値を持たせることは物理的に不可能です。 – jdweng