如何在PHP和MYSQL中使用Varchar数据类型中的自动增量?

如何在PHP和MYSQL中使用Varchar数据类型中的自动增量?,php,mysql,Php,Mysql,有人能告诉我们如何在varchar数据类型中使用自动递增吗 我一直在寻找其他问题,人们总是要求使用INTEGER或触发器。但是,这是我学院的项目,它有一个使用varchar的规则 根据数据库中存在的上一个产品ID自动生成 例如,如果最新产品ID为“PR004”,则新ID为“PR005” 所以,我们必须在php中设置自动增量,对吗?有人能告诉我如何使用它吗 谢谢你MYSQL 5.7.5: 您可以使用和来完成目标 未经测试 为了您的方便 MSSQL: 最简单的方法是简单地创建一个计算列。它将所谓的

有人能告诉我们如何在varchar数据类型中使用自动递增吗

我一直在寻找其他问题,人们总是要求使用INTEGER或触发器。但是,这是我学院的项目,它有一个使用varchar的规则


根据数据库中存在的上一个产品ID自动生成 例如,如果最新产品ID为“PR004”,则新ID为“PR005”

所以,我们必须在php中设置自动增量,对吗?有人能告诉我如何使用它吗


谢谢你

MYSQL 5.7.5:

您可以使用和来完成目标

未经测试

为了您的方便

MSSQL:

最简单的方法是简单地创建一个计算列。它将所谓的“计算”列与标识列结合使用

    CREATE TABLE Test
             (
              ProdID AS CAST('PR'+RIGHT('000'+CAST(RowNum AS VARCHAR(3)),3) AS VARCHAR(30)) PERSISTED
             ,ProdName VARCHAR(30)
,RowNum INT IDENTITY(1,1) 
             );


  INSERT INTO Test (ProdName)
  SELECT 'Thread' UNION ALL
  SELECT 'Button Thread' UNION ALL
  SELECT 'Coat Thread';

  SELECT ProdID, ProdName FROM Test;
返回以下内容(请注意,自动增量已起作用):


我认为mysql中不允许这样做,使用phpmyadmin它会给我带来错误#1063。如何真正增加varchar?如果绝对需要存储全文,两列和一个触发器才是最好的选择。我认为,这在几乎所有情况下都不是必要的。
    CREATE TABLE Test
             (
              ProdID AS CAST('PR'+RIGHT('000'+CAST(RowNum AS VARCHAR(3)),3) AS VARCHAR(30)) PERSISTED
             ,ProdName VARCHAR(30)
,RowNum INT IDENTITY(1,1) 
             );


  INSERT INTO Test (ProdName)
  SELECT 'Thread' UNION ALL
  SELECT 'Button Thread' UNION ALL
  SELECT 'Coat Thread';

  SELECT ProdID, ProdName FROM Test;
 ProdID                         ProdName
 ------------------------------ ------------------------------
 PR001                          Thread
 PR002                          Button Thread
 PR003                          Coat Thread