我有例如代码:
PC_MB_TC_0001
PC_GH_TY_0002
PS_AB_VH_0003
IC_WC_XX_0001
IH_ML_FR_0002
这些代码是系统生成的。我使用的逻辑:首先找到以'P'开头的代码计数。然后将该计数加 1。此逻辑运行良好,但从数据库中删除代码时会失败。那么是否有任何 MySQL 查询可以做到这一点,或者任何人都可以帮助我处理其他一些逻辑。
我正在使用 cakePhP。
提前致谢
如果您可以使用 MyISAM,您可以创建一个多列自动增量来为您完成工作。您需要将字符串和自动递增的数字存储在单独的列中,才能使此解决方案起作用。
对于 MyISAM 表,您可以在多列索引中的辅助列上指定 AUTO_INCREMENT。在这种情况下,AUTO_INCREMENT 列的生成值计算为 MAX(auto_increment_column) + 1 WHERE prefix=given-prefix。
你可以试试
SELECT 1+MAX(CONVERT(RIGHT(your_column_name, 4), SIGNED)) as newindex
FROM your_table
WHERE your_column_name LIKE 'P%';
您可能想尝试查看
echo $this->ModelName->getInsertID();
或者
echo $this->ModelName->getLastInsertID();
这些将为您提供最后插入的 MySQL 记录 ID。然后您可以查找该 id 的代码值是什么。