我需要在表格中插入新添加的产品。但要这样做,我需要检查最后插入产品的SKU并将其增加1并插入新产品详细信息。 SKU就像SKUNXXXXX - X是一个数字。无法更改表格结构。
我能想到的可能的解决方案是
但是这种情况可能会产生问题(虽然我不确定)。问题是 - 如果只是在获取最后一条记录之后,在插入新产品详细信息之前,另一个请求进入并获得相同的最后一条记录?在这种情况下,两种产品都具有相同的SKU。
请让我知道如何解决这种情况。
答案 0 :(得分:0)
一个选项是创建自动增量id
列,然后使用此选项为每个产品插入时创建SKU
。然后,可以使用在INSERT
之后触发的触发器为新插入的产品分配SKU
。但是,MySQL不允许触发器修改触发它的表。
但是,这里有一个可能很容易的解决方法。如果您的SKU
值实际上始终具有格式SKUNXXXXX
,其中XXXXX
是某个数字,那么您只需添加自动增量列,然后创建SKU
值当你查询它时飞。因此,您可以创建一个名为products
的表,其中包含以下列:
CREATE TABLE products
(
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(55),
...
);
每次在INSERT
上执行products
时,id
列将自动由MySQL递增。如果您希望获得SKU
,则只需执行以下查询:
SELECT id, name, CONCAT('SKUN', id) AS `SKU`
FROM products
WHERE name = 'someproduct'
如果您希望SKU
号码不是永久的(即,一旦分配给某个产品,可以将其重新分配给另一个新产品),那么您可以考虑重置自动增量id
列,qv this SO post了解更多信息。