php – 根据最后一条记录插入一行列值
发布时间:2020-12-13 22:23:10 所属栏目:PHP教程 来源:网络整理
导读:我需要在表格中插入新添加的产品.但要这样做,我需要检查最后插入产品的SKU并将其增加1并插入新产品详细信息. SKU就像SKUNXXXXX – X是一个数字.无法更改表结构. 我能想到的可能的解决方案是 使用order by和limit 1获取最后一行. 用空字符串替换“SKUN”并将
我需要在表格中插入新添加的产品.但要这样做,我需要检查最后插入产品的SKU并将其增加1并插入新产品详细信息. SKU就像SKUNXXXXX – X是一个数字.无法更改表结构.
我能想到的可能的解决方案是 >使用order by和limit 1获取最后一行. 但这种情况可能会产生问题(虽然我不确定).问题是 – 如果只是在获取最后一条记录之后,在插入新产品详细信息之前,另一个请求进入并获得相同的最后一条记录?在这种情况下,两种产品都具有相同的SKU. 请让我知道如何解决这种情况. 解决方法
一种选择是创建一个自动增量id列,然后使用它来为每个产品插入时创建SKU.然后可以使用在INSERT之后触发的触发器为新插入的产品分配SKU.但是,MySQL不允许触发器修改触发它的表.
但是,这里有一个可能很容易的解决方法.如果您的SKU值实际上总是具有SKUNXXXXX格式,其中XXXXX是某个数字,那么您只需添加一个自动增量列,并在查询时动态创建SKU值.因此,您可以创建一个名为products的表,其中包含以下列: CREATE TABLE products ( id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(55),... ); 每次对产品执行INSERT时,id列将自动由MySQL递增.当您想要获取SKU时,您可以简单地执行以下查询: SELECT id,name,CONCAT('SKUN',id) AS `SKU` FROM products WHERE name = 'someproduct' 如果您希望SKU编号不是永久的(即,一旦分配给给定产品,可以将其重新分配给另一个新产品),那么您可以考虑重置自动增量ID列q.v. this SO post获取更多信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |