2

我正在尝试创建一个工作应用程序。该应用程序将在内部使用,并应允许我们为我们的产品SKU分配一些条形码号码。我正在使用Visual Studio/Basic 2010 Express来构建这个功能,因为我非常有限且初学者的体验是VS 2010 Express。将自动增量限制到特定范围

我给一个关于我怎么看这个应用程序工作位的信息,然后我会与我的实际问题:

我看到应用程序允许我们通过在数据库中创建一个新的产品用户输入SKU和产品描述,然后应用程序将为该产品分配条码的下一个可用基本编号,然后应用程序将(如果需要)生成正确的EAN13和GTIN14条形码,并将其存储在该SKU中。

作为一家公司,我们可以使用大量的条形码号码,并且我们已经将这个大范围分开,以便第一个50,000(例如)用于我们的EAN13代码,接下来的50K用于我们的GTIN14代码内箱和剩余的50K用于主纸箱。

所以为了实现这个我有我的产品表,其中包含'SKU','Description'和'BarcodeBase'字段。我设法将BarcodeBase字段设置为唯一的,并且我尝试使用AutoIncrement(种子&步骤)以确保此操作为产品分配符合上述EAN13范围的基本条码(在计算校验位之前) ...

因此,最后我的问题是:有没有办法可以对AutoIncrement设置一个上限,以便在未来的途中,基本条形码号码不会溢出到下一个范围?

我一直在谷歌搜索没有成功的答案,我只是遇到的事情,谈论有限的领域的数据类型。例如Int32类型的上限。通过我的搜索,我已经模糊地意识到该领域的'表达'属性以及编码部分类的可能性 - 但我不知道这是否是正确的方向或者是否有更简单的方法我忽略/没有找到。

我真的很感激任何帮助!

编辑:按照GrandMasterFlush的评论 - 我已经添加了一个本地数据库到我的VS项目。所以我想我正在使用SQL Server Compact 3.5 db。

+2

您使用的是哪种数据库系统?这可能是值得你编辑/重新编写你的问题的。 – GrandMasterFlush

+0

你可以用简单的查询来实现吗?返回表中的项目计数并继续应用程序逻辑。 –

+1

@GrandMasterFlush - 同意,已编辑帖子并添加标签。感谢 – AlexAshleighBurwood

回答

1

使用检查约束,例如:

ALTER TABLE dbo.Product ADD CONSTRAINT ... 
CHECK (BarcodeBase BETWEEN 1 AND 50000); 

我建议你不要做BarcodeBase在产品表中的IDENTITY列(IDENTITY是你指的是“自动增量”的功能)。 IDENTITY实际上是专为替代关键码使用而设计的,对于有意义的商业数据并不理想。您无法更新IDENTITY列,它不一定是连续的,可能在编号序列中存在空白,并且您也只能为每个表使用一个IDENTITY列。您可以在其他位置生成序列,而不是在产品表中使用IDENTITY,例如,通过递增存储在单个行表中的单个值。

+0

谢谢你这么多的可能的答案@sqlvogel - 而我去找出其中的一些话是什么意思/我有一个后续的问题:我应该BarcodeBase自己的表,然后我的产品表链接到?那是你在别处产生序列的意思吗?还是我误解了? – AlexAshleighBurwood