2

我正在尝试创建一个工作应用程序。该应用程序将在内部使用,并应允许我们为我们的产品 SKU 分配一些条形码编号。我正在使用 Visual Studio / Basic 2010 Express 来构建它,因为我非常有限且初学者的经验是使用 VS 2010 Express。

我将提供一些关于我如何看待这个应用程序工作的信息,然后我将继续我的实际问题:

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

作为一家公司,我们有大量可以使用的条码编号,我们将这一大范围分开,以便前 50,000 个(例如)用于我们的 EAN13 代码,接下来的 50K 用于我们的 GTIN14 代码,用于内箱和剩下的 50K 用于 Master Carton。

因此,为了实现这一点,我有我的 Product 表,其中包含字段“SKU”、“Description”和“BarcodeBase”。我已设法将 BarcodeBase 字段设置为唯一字段,并且我正在尝试使用 AutoIncrement(Seed & Step) 来确保这会为产品分配一个位于 EAN13 范围内的基本条形码(在我计算校验位之前),如上所述...

所以最后我的问题是:有没有办法可以设置 AutoIncrement 的上限,以便在未来的偶然情况下,基本条形码编号不会溢出到下一个范围?

我一直在谷歌搜索没有成功,我只遇到了一些关于该字段的数据类型有限制的事情。例如 Int32 类型的上限。通过我的搜索,我已经模糊地意识到该字段的“表达式”属性以及编码部分类的可能性 - 但我不知道这是否是正确的方向,或者是否有更简单的东西我俯瞰/没有找到。

我真的很感激任何帮助!

编辑:根据 GrandMasterFlush 的评论 - 我在我的 VS 项目中添加了一个本地数据库。所以我想我使用的是 SQL Server Compact 3.5 db。

4

1 回答 1

1

使用 CHECK 约束,例如:

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

我建议您不要将 BarcodeBase 作为 Product 表中的 IDENTITY 列(IDENTITY 是您所说的“自动增量”功能)。IDENTITY 确实是专为代理键使用而设计的,并不适合有意义的业务数据。您不能更新 IDENTITY 列,它不一定是连续的,可能在数字序列中有间隙,并且您也只能在每个表中使用一个 IDENTITY 列。您可以在别处生成序列,而不是在 Product 表中使用 IDENTITY,例如通过递增存储在单行表中的单个值。

于 2014-05-01T14:41:21.740 回答