【问题标题】:How to update a field CONCAT with auto increment?如何使用自动增量更新字段 CONCAT?
【发布时间】:2019-07-21 01:02:10
【问题描述】:

我有一个区域字段来检查我的表上存在的计数。如果计数为 0,它将从 01 开始(例如 SG01)。我目前正在寻找一个查询,该查询再次检查区域关键字何时以及是否已更改,它将再次检查并且表中存在它将根据区域添加(例如,如果已经存在 VN01,则为 VN02)。

这是我的插入查询

INSERT INTO tbl_regions(region_ID, region_Name, company_Name, region_Address, region_Keyword) 
    SELECT :region_ID, :region_name, :company_name, :region_address,
           CONCAT(:region_keyword, LPAD(COUNT(region_Keyword) +1,2,0))
    FROM tbl_regions
    WHERE region_Keyword LIKE '%:region_keyword%'")

目前正在寻找我是否会更新 region_keyword 字段的查询。

【问题讨论】:

  • 这很困难,因为不能保证自动递增序列总是不断增加。你的 MySQL 版本是多少?
  • 服务器版本:10.1.28-MariaDB mariadb.org 二进制分发版
  • 我建议使用计算列。
  • 注意:占位符值通常不支持这种插值。您需要改为使用 CONCAT('%', :region_keyword, '%') 或将 % 添加到您要绑定的内容中。
  • 嗨@tadman 感谢您的建议,实际上插入工作照原样。尽管我正在处理的问题是更新过程,但我会解决这个问题。有什么建议么 ? .

标签: php mysql sql pdo


【解决方案1】:

这是非常危险的,因为它会受到并发问题的影响。我建议使用带有sp_getapplocksp_releaseapplock 的存储过程,以确保您不会得到重复的值。它还使得创建变量来解析最大区域 ID 并增加值变得简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多