【发布时间】:2014-03-12 02:47:02
【问题描述】:
这是我的数据示例:
ID - autonumber ~ 是他们的primary keyWeek - 字面意思是仔猪出生的那一周Sow Order - 母猪编号
规则:
1. 如果仔猪在同一周出生,不管他们的母猪。仔猪编号继续
2. 如果小猪下周出生,编号返回0001然后规则1。
添加仔猪的方式是week + sow + (number of piglets)。例如(10),它会在 week=01 & sow=01 产生十头仔猪 0001 到 0010。
问题是,如果用户输入的仔猪数量有误怎么办?根据图片01 01 has two piglets,如果不是2个呢?比如说,它是 3。所以用户需要删除它,然后将编号 必须 调整为..
01 | 01 | 0001
01 | 01 | 0002
01 | 01 | 0003
01 | 02 | 0004
01 | 02 | 0005
做这种事情的正确方法是什么?
【问题讨论】:
-
您正在生成 Piglet 编号。解释清楚如何生成仔猪编号
-
为什么必须重新编号母猪 02 的现有仔猪?为什么母猪 01 中新发现的第 3 头仔猪不能编号为 0005?我问的原因是因为一旦您将 ID 号分配给“事物”并且您在其他地方(即在另一个表中)使用该 ID 号,那么通常应该尽可能避免更改现有“事物”的 ID 号。
-
好吧,用户希望它被连续编号,因为添加仔猪取决于有多少仔猪(哪些数据是按批次来的)所以它必须遵循农场每头猪的协议.这种输入错误很不寻常,但从数据管理软件来看,这很重要。 @SATSON 它会根据用户输入的数量生成小猪。
-
您希望使用纯 SQL 还是在后端的帮助下完成?
-
ID 通常是抽象的,正如 Gord 指出的那样,更改它们(永远)不是一个好主意。要求它们是连续的或可编辑 真的 意味着存在另一个用户字段(和/或它不是 PK 的候选者)。因此,ID 可能是自动编号并且可能永远不会向用户显示,而
UserTag列显示“000N”。然后用户可以编辑它们,或者您的代码可以根据需要重新排序它们,并且没有任何中断。任何可以改变的东西(比如电话号码)都不适合 PK。
标签: .net database vb.net ms-access