如何使用自动增量更新字段 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_getapplock
和sp_releaseapplock
的存储过程,以确保您不会得到重复的值。它还使得创建变量来解析最大区域 ID 并增加值变得简单。
【讨论】:
以上是关于如何使用自动增量更新字段 CONCAT?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用自动增量键更新 IndexedDB 项目? [复制]
由于使用自动增量添加到表中,如何使用更新的数据刷新 C# DataTable?