【发布时间】:2017-05-14 06:40:55
【问题描述】:
我正在开发一个库存控制系统,我在 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
我将使用Products 表中的PRDCTCODE 列作为Product Count 表中PRDCTCODE 列的外键。 Products 表中的 PRDCTCODE 列将有一个唯一的键约束,因此我的库存中的每个项目只能在我的 Products 表中出现一次,之后我打算做的是显示里面的实际数量我的Product Count 表。
我想知道的是:是否可以基于违反@987654334 中PRDCTCODE 列的唯一键约束来增加Product Count 表中PRDCTCOUNT 列中的产品数量@table 扫描相同的项目时?
例如:扫描20瓶相同的牛奶入库存时,如果Products表中已经存在牛奶,我可以利用PRDCTCODE列唯一键约束的违规错误增加@ Product Count 表中的 987654337@ 列?
这是个好主意吗?如果我故意导致/使用违规来增加我的产品数量而不是遍历整个Product Count 表以首先找到匹配的产品,读取PRDCTCOUNT 列中的数量然后增加/减少数量会导致什么问题基于扫描或销售?
如果只有 10 000 或 50 000 行,我想每次扫描一个项目时迭代不会有问题,但如果 Product Count 表中有 100 000 行并且有 1000 瓶牛奶正在扫描进来的?我可以想象,必须像扫描牛奶瓶一样快地遍历 100 000 行 1000 次,这可能会导致问题?
【问题讨论】:
-
唯一约束控制新记录的添加。为什么要使用它来控制添加的产品数量?
-
为了避免必须先在表中搜索才能找到项目。然后,违规将创建更新 PRDCTCOUNT 字段的机会,而该项目可能不存在于 Product Count 表中,并且不必先检查它是否存在。换句话说,如果存在违规,则意味着该项目存在于 Product Count 表中,那么剩下要做的就是更新查询。
-
数据库是具有行和列的平面对象。表是数据库的视图,它只包含数据库的一部分,以便于读取和写入。所以物理上不可能让数据库中的同一个单元格同时有两个不同的值。
标签: c# sql sql-server-2012