Php mysql字段值前缀中的问题

Php mysql字段值前缀中的问题,php,mysql,Php,Mysql,我正在使用下面的函数创建一个前缀为字母的唯一字段。 如果将其用于与多个用户的事务,是否会导致任何问题? 该场景是,如果有多个用户同时使用系统,则在循环内调用该函数。这会导致任何错误吗?有更好的方法吗?我使用glaccounted作为其他表的外键 function getID(){ global $db; $max_gl = $db->get_var("SELECT MAX(GLAccountNumber) FROM sys_glaccount"); if($max_

我正在使用下面的函数创建一个前缀为字母的唯一字段。 如果将其用于与多个用户的事务,是否会导致任何问题? 该场景是,如果有多个用户同时使用系统,则在循环内调用该函数。这会导致任何错误吗?有更好的方法吗?我使用glaccounted作为其他表的外键

function getID(){
    global $db;
    $max_gl = $db->get_var("SELECT MAX(GLAccountNumber) FROM sys_glaccount");
    if($max_gl == null){
        $max_gl = 1;
    }else if($max_gl > 0){
        $max_gl = $max_gl + 1;
    }
    return 'GLA'.$max_gl;
}
表看起来像这样,GLAccountNumber是主键,我将其设置为自动递增


有很多方法可以做到这一点,但你真的不应该这么做。认真地这是沉重和危险的,开发者在你之后会在晚上哭一点

请考虑使用帐号,只需在检索时加上GLA。这样,您就拥有了简单、快速和正确的自动id,并且可以在需要时对其进行预修饰

另一个选择是将其设置为组合键,前缀在一列中,数字在自动递增中,尽管我不明白为什么需要它


最后,如果您所做的只是添加三个字母,那么实际上不需要在同一个字段中添加:)

有很多方法可以做到这一点,但实际上不应该这样做。认真地这是沉重和危险的,开发者在你之后会在晚上哭一点

请考虑使用帐号,只需在检索时加上GLA。这样,您就拥有了简单、快速和正确的自动id,并且可以在需要时对其进行预修饰

另一个选择是将其设置为组合键,前缀在一列中,数字在自动递增中,尽管我不明白为什么需要它


最后,如果您只需添加三个字母,则不需要在同一字段中实际添加:)

您实际上可以以所需格式获取帐户id,而无需新行:

SELECT CONCAT('GL',GLAccountNumber) AS GLaccountID FROM `sys_glaccount`
而不是制作一个全新的专栏只是为了被引用

或者,如果您的目的是避免与相同字段混淆,则可以使用

SELECT g.GLAccountNumber FROM `sys_glaccount` g INNER JOIN `sys_glaccount2` g2 ON g2.GLAccountNumber=g.GLAccountNumber

如果没有唯一的字段名,查询就不会变得混乱

您实际上可以以您想要的格式获取帐户id,而无需新行:

SELECT CONCAT('GL',GLAccountNumber) AS GLaccountID FROM `sys_glaccount`
而不是制作一个全新的专栏只是为了被引用

或者,如果您的目的是避免与相同字段混淆,则可以使用

SELECT g.GLAccountNumber FROM `sys_glaccount` g INNER JOIN `sys_glaccount2` g2 ON g2.GLAccountNumber=g.GLAccountNumber

如果您这样做,并且另一个用户同时执行相同的操作,那么您将得到两个相同的accountID,但其中一个具有不同的accountnumber,而不会因没有唯一字段名而混淆查询。如果您锁定表,速度会变慢。如果您这样做,而另一个用户同时执行相同的操作,您将获得两个相同的accountID,但其中一个具有不同的accountnumber。如果你锁上桌子,东西会变慢。