Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
SQL在第一个可用行id中插入数据_Sql_Insert - Fatal编程技术网

SQL在第一个可用行id中插入数据

SQL在第一个可用行id中插入数据,sql,insert,Sql,Insert,我有一个SQL表,它有一个主键(Row\u id),其格式如下: 110001 110002 110003 ... 随着时间的推移,可以通过删除某些行来更新此表。我有一个php脚本,希望它在第一个可用位置插入新行,而不仅仅是增加最后一个现有id 例如,如果我有: 110001 110002 110004 110005 我希望插入新行并指定id=110003而不是110006 任何帮助都将不胜感激 不知道为什么要重用id,但是,我们开始吧 假设您的表名为Tbl: S

我有一个SQL表,它有一个主键(
Row\u id
),其格式如下:

110001  
110002  
110003  
...  
随着时间的推移,可以通过删除某些行来更新此表。我有一个php脚本,希望它在第一个可用位置插入新行,而不仅仅是增加最后一个现有id

例如,如果我有:

110001  
110002  
110004  
110005
我希望插入新行并指定
id=110003
而不是
110006


任何帮助都将不胜感激

不知道为什么要重用id,但是,我们开始吧

假设您的表名为
Tbl

Select MIN(a.Id + 1)
From   Tbl A 
       Left Join Tbl B
         On A.Id = B.Id - 1
Where  B.Id Is NULL
这适用于检索所需的id
之后,很明显,您必须基于前面的值进行插入。
所以


您可以将您的id设置为唯一的id 然后从110001开始运行for/while循环

`$query = "...";
try {
    mysql_query($query);
} catch(Exception $ex) {
    if (mysql_errno() == 1062) {
        throw new Exception('The email you used exists already');
    } else {
        throw $ex;
    }
}
` 每当一个唯一密钥被破坏时,就会引发1062错误。我们需要捕获它,因为它是唯一的email字段,但是它也可能被引发,因为您破坏了主键或另一个我们忽略存在的唯一字段。您必须调整此代码,以防您认为在查询过程中其他一些独特的约束也可能被破坏


如果查询成功;您可以插入该特定id。

这是一个糟糕的主意。不要这样做。请检查我的工作回答。如果我希望Tbl本身是另一个选择的结果,该怎么办?你能给我一个问题吗?@bijibuji我不明白你的问题。请尽量准确些。我还没有确切的表格Tbl,但这是另一个选择的结果。我怎样才能在你建议的查询中嵌入这个SELECT呢?@bijibuji看看我上面写的第二个查询,并将其作为下一个查询库的基础!它现在运转良好。请让我再问你两个问题Don。。。当我在phpmyadmin中运行查询时,如何在php中访问结果product_id,因为它列在“MIN(a.product_id+1)”字段下。我想在php中使用生成的产品_id(比如110001)
`$query = "...";
try {
    mysql_query($query);
} catch(Exception $ex) {
    if (mysql_errno() == 1062) {
        throw new Exception('The email you used exists already');
    } else {
        throw $ex;
    }
}