【问题标题】:How to generate autoincrement primary key in varchar [duplicate]如何在varchar中生成自动增量主键[重复]
【发布时间】:2014-01-22 11:01:01
【问题描述】:

我希望我的 UserId 字段类似于 AB001。

其中 AB 是任何事物的名称并且是常数,而 001 是 自动递增值。

我怎样才能在 PHP 和 MySql 中做到这一点。

【问题讨论】:

  • 您可以在这里找到答案:stackoverflow.com/questions/17893988/…
  • 我认为您需要拥有一个复合主键,其中多个字段共同构成一个唯一值。然后您可以将自动增量字段与名称分开,这两个字段将作为主键一起工作。检查stackoverflow.com/questions/5835978/…
  • @AmithRajShetty 如果我使用 PHP 和 MySql,我该如何实现??
  • 如果AB 是恒定的并且永远不会改变,你可以在你的表上有一个view,它会暴露一个列ID,但是在那个视图的select 中你会连接那个常量具有 normal 自动增量的值,例如 SELECT 'AB' + CAST(ID AS VARCHAR(10)) AS ID FROM yourTable

标签: php mysql


【解决方案1】:

请阅读以下问题:

如果您确实依赖数据库中的此字段,您也可以尝试使用triggers

否则在运行时构建 AB 部分以将其显示给用户。

【讨论】:

    【解决方案2】:

    在 PHP 中,您可以像这样递增 var:

    $var = "AB001";
    
    for($i = 0; $i < 10; $i++) {
        echo $var . "\n";
        $var++;
    }
    

    那你只需要插入到mysql中...

    编辑----

    但是,如果两个进程同时创建相同的 ID,您可能会遇到 ID 冲突!

    另一个编辑----

    您可以创建一个这样的函数并像这样传递数据库 ID 和基本格式:

    $base = "AB000";
    
    echo createId($base, 1456);
    
    function createId($base, $dbId)
    {
        for ($i = 0; $i < $dbId; $i++) {
            $base++;
        }
        return $base;
    }
    

    我希望这就是你要找的:)

    【讨论】:

    • 这真的是有效的 php 吗?你在循环中声明 $i 但从不使用它,然后你 increment $var 已被分配给一个字符串......这行得通吗?
    • $i在循环中用于检查每次迭代后是否低于10
    • 我在用户注册时给了他这个 UserId。表中的属性是 A_I。
    • @micb 是的,我认为它在很长一段时间内都无法与 php 一起使用,似乎它可以工作(phpfiddle.org/main/code/ifq-1jd)但我仍然不建议在 php 中执行此 id 检索操作,而是在数据库本身,因为它可以更好地处理唯一性和内容(更不用说它确实可以处理这些事情,而 php 不能:D)
    • DrCopyPaste 我同意...@user3220816 好的,我想我明白了你的意思,我会在几分钟内更新我的回复
    【解决方案3】:

    请看这个Fiddle。如果您需要更多说明,请告诉我。

    【讨论】:

    • 这么短的文字最好是评论。不要只是在你的答案中链接东西,请在你的答案中包含相关的解释和代码;所以它不依赖于外部资源;)
    • 我无法发表评论,因为我没有足够的声誉(最少 50 分)来评论问题。
    • 然后扩展你的答案;)不需要调用链接来理解答案;使用小提琴很好,但在此处包含您的代码,因此不依赖于它
    • 从下一次开始.. :) 我认为提供一个人们可以编辑代码的工作示例会更有助于理解。 :)
    • 我总是鼓励这样做,但我也总是鼓励包括关于这一点的解释(显然,带解释的工作代码示例比没有解释的工作代码示例更有帮助;))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    相关资源
    最近更新 更多