我需要在桌子上插入一个新添加的产品。但要做到这一点,我需要检查SKU的最后插入产品,并增加1,并插入它与新产品的细节。SKU类似于SKUNXXXXX -X是一个数字。无法更改表结构。
我能想到的可能的解决方案是
但这种情况可能会造成问题(尽管我对此不太确定)。问题是--如果在获取最后一条记录之后,在插入新产品详细信息之前,另一个请求出现并得到相同的最后一条记录,该怎么办?在这种情况下,这两种产品都有相同的SKU。
请告诉我如何解决这个问题。
发布于 2015-12-15 09:33:07
一个选项是创建一个自动增量id列,然后在插入每个产品时使用它为每个产品创建SKU。然后可以使用触发器(在INSERT之后触发)为新插入的产品分配SKU。但是遗憾的是,MySQL不允许触发器修改触发它的表。
然而,这里有一个潜在的简单的解决办法。如果您的SKU值始终具有SKUNXXXXX格式,其中XXXXX是某个数字,那么您可以简单地添加一个自动增量列,并在查询它时动态创建SKU值。因此,您可以使用以下列创建一个名为products的表:
CREATE TABLE products
(
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(55),
...
);每次在products上执行products时,id列都会自动由MySQL递增。当您想要取出SKU时,只需执行如下查询:
SELECT id, name, CONCAT('SKUN', id) AS `SKU`
FROM products
WHERE name = 'someproduct'如果希望SKU编号不会永远存在(即一旦分配给给定的产品,就可以重新分配给另一个新的产品),那么您可以考虑重置自动增量id列q.v。this SO post获取更多信息。
https://stackoverflow.com/questions/31645532
复制相似问题