首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据上一次记录插入一行列值

问根据上一次记录插入一行列值
EN

Stack Overflow用户
提问于 2015-07-27 05:30:11
回答 1查看 450关注 0票数 4

我需要在桌子上插入一个新添加的产品。但要做到这一点,我需要检查SKU的最后插入产品,并增加1,并插入它与新产品的细节。SKU类似于SKUNXXXXX -X是一个数字。无法更改表结构。

我能想到的可能的解决方案是

  • 使用order并限制1获取最后一行。
  • 将"SKUN“替换为空字符串,并将数字增加1。
  • 插入包含产品详细信息和递增SKU值的记录

但这种情况可能会造成问题(尽管我对此不太确定)。问题是--如果在获取最后一条记录之后,在插入新产品详细信息之前,另一个请求出现并得到相同的最后一条记录,该怎么办?在这种情况下,这两种产品都有相同的SKU。

请告诉我如何解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2015-12-15 09:33:07

一个选项是创建一个自动增量id列,然后在插入每个产品时使用它为每个产品创建SKU。然后可以使用触发器(在INSERT之后触发)为新插入的产品分配SKU。但是遗憾的是,MySQL不允许触发器修改触发它的表。

然而,这里有一个潜在的简单的解决办法。如果您的SKU值始终具有SKUNXXXXX格式,其中XXXXX是某个数字,那么您可以简单地添加一个自动增量列,并在查询它时动态创建SKU值。因此,您可以使用以下列创建一个名为products的表:

代码语言:javascript
复制
CREATE TABLE products
(
    id INT(11) NOT NULL AUTO_INCREMENT,
    name VARCHAR(55),
    ...
);

每次在products上执行products时,id列都会自动由MySQL递增。当您想要取出SKU时,只需执行如下查询:

代码语言:javascript
复制
SELECT id, name, CONCAT('SKUN', id) AS `SKU`
FROM products
WHERE name = 'someproduct'

如果希望SKU编号不会永远存在(即一旦分配给给定的产品,就可以重新分配给另一个新的产品),那么您可以考虑重置自动增量id列q.v。this SO post获取更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31645532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档