MySQL:如何插入具有相同ID自动增量的多个记录

时间:2012-06-11 03:25:50

标签: mysql database auto-increment

我有一个包含1列的表,用于存储ID auto_increment以及该指令:

$query = "SELECT first_data, second_data, third_data
            FROM table_data
                WHERE condition = 'value_condition'";
$result = mysql_query($query) or die(mysql_error());

$no_of_rows = mysql_num_rows($result);

    if ($no_of_rows > 0) {
        while($row = mysql_fetch_assoc($result)) {
            $valueone = $row['first_data'];
            $valuetwo = $row['second_data'];
            $valuethree = $row['third_data'];

            $queryTwo = "INSERT INTO historial_ventas (reg1, reg2, reg3) 
                        VALUES('$ivalueone','$valuetwo','$valuethree')";
            $resultTwol = mysql_query($queryTwo) or die(mysql_error());
        }
    } else {
        return false;
}

信息存储如下:

ID(auto_increment)  reg1      reg2      reg3
______________________________________________
1                   value1    value2    value3
2                   value1    value2    value3
3                   value1    value2    value3
4                   value1    value2    value3

但是我希望在while循环中保存记录,使用与在线购买时相同的ID存储,即保存产品及其功能但使用相同的ID购买,这样:

ID(auto_increment)  reg1      reg2      reg3
______________________________________________
1                   value1    value2    value3
1                   value1    value2    value3
1                   value1    value2    value3
1                   value1    value2    value3

3 个答案:

答案 0 :(得分:4)

我假设ID列被定义为主键,在这种情况下,它的整个目的是提供一个唯一的数据来识别每个记录 - 在同一个表中不可能有两个记录使用相同的主键。你到底想要完成什么?如果您想存储购买ID,您应该为它创建一个单独的列并明确存储它 - 自动增量列不是您正在寻找的。

答案 1 :(得分:1)

规范化的方法是使用这样的联合表:

Purchase System

PurchaseIdItemId都设置为自动递增。主键的目的是唯一标识每一行。

更新:客户

阅读Database Normalization,了解如何设计数据库以使其有效。

enter image description here

答案 2 :(得分:0)

删除自动增量并手动输入ID号。您还需要检查它是否设置为主键(即唯一)。确保这是您想要做的,因为删除唯一性可能会导致以后出现问题。

要在输入while循环之前执行此操作,您可以获得最大数字(select max(id) from tablename),将其递增1,然后将其插入while循环中。

$query = "SELECT max(id)
            FROM historial_ventas";
$result = mysql_query($query) or die(mysql_error());

//increase you resulting number
$result = $result + 1

    if ($no_of_rows > 0) {
        while($row = mysql_fetch_assoc($result)) {
            $valueone = $row['first_data'];
            $valuetwo = $row['second_data'];
            $valuethree = $row['third_data'];

            $queryTwo = "INSERT INTO historial_ventas (id, reg1, reg2, reg3) 
                        VALUES('$result', '$ivalueone','$valuetwo','$valuethree')";
            $resultTwol = mysql_query($queryTwo) or die(mysql_error());
        }
    } else {
        return false;
}