如何使用自动增量更新字段 CONCAT?

Posted

技术标签:

【中文标题】如何使用自动增量更新字段 CONCAT?【英文标题】:How to update a field CONCAT with auto increment? 【发布时间】: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 感谢您的建议,实际上插入工作照原样。尽管我正在处理的问题是更新过程,但我会解决这个问题。有什么建议么 ? . 【参考方案1】:

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

【讨论】:

以上是关于如何使用自动增量更新字段 CONCAT?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动增量键更新 IndexedDB 项目? [复制]

由于使用自动增量添加到表中,如何使用更新的数据刷新 C# DataTable?

ChunJun-JDBC轮询增量更新-源码分析

Doctorine/Dbal - 更新表迁移在整数上添加不需要的“自动增量”(不是增量)

Unity5 如何做资源管理和增量更新

SSIS Design2:增量更新