Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么php函数mysql\u insert\u id在回滚后仍然自动递增?_Php_Mysql - Fatal编程技术网

为什么php函数mysql\u insert\u id在回滚后仍然自动递增?

为什么php函数mysql\u insert\u id在回滚后仍然自动递增?,php,mysql,Php,Mysql,可能重复: 为什么这是个问题?MySQL必须生成自动增量值来尝试插入,因此即使事务失败(在生成密钥之后),该密钥仍将被有效地“使用”。如果我没记错的话,你可以在桌子上进行清理以回收这些用过的钥匙 <?php header("Content-Type:text/html; charset=utf-8") ; $conn = mysql_connect('127.0.0.1', 'root', '123456') ; mysql_select_db('test') ; mysql_qu

可能重复:


为什么这是个问题?MySQL必须生成自动增量值来尝试插入,因此即使事务失败(在生成密钥之后),该密钥仍将被有效地“使用”。如果我没记错的话,你可以在桌子上进行清理以回收这些用过的钥匙

<?php
header("Content-Type:text/html; charset=utf-8") ;

$conn = mysql_connect('127.0.0.1', 'root', '123456') ;

mysql_select_db('test') ;

mysql_query('set autocommit=0') ;
mysql_query('start transaction') ;

try
{
    $sql = "insert into `user`(`username`, `password`) values('demo', 'demopassword')" ;
    echo $sql, '<br/>' ;
    $rs = mysql_query($sql) ;
    echo mysql_affected_rows(), '<br/>' ;
    if (mysql_affected_rows() > 0)
    {
        $uid = mysql_insert_id() ;
        echo $uid, '<br/>' ;
        throw new Exception('conn exception : ' . mysql_error()) ;
    }
    else
    {
        throw new Exception('conn exception : ' . mysql_error()) ;
    }
}
catch(Exception $e)
{
    echo $e->getMessage(), '<br/>' ;
    echo "rollback", "<br/>" ;
    mysql_query('rollback') or die(mysql_error()) ;
}

if (!$conn) 
{
    mysql_close($conn) ;
}
?>