MySQL id编号在表中

时间:2012-06-09 18:02:26

标签: php mysql

假设我有一个链接到这样的数据库的表:http://www.falkencreative.com/forum/records/view.php

如何制作它以便在删除记录然后添加新记录时,新记录会替换先前删除的记录并具有先前删除的ID号而不是下一个ID?

例如

  1. 红色
  2. 绿色
  3. 点击按钮删除绿色。

    1. 红色
    2. 单击按钮添加新颜色。 输入橙色

      1. 红色
      2. 就目前而言,我正在努力解决的问题是: 1.红色 蓝色 4.橙色(什么应该设置为3?)

        就桌面设置而言,这可能是一件简单的事情,但我不知道该做什么,而且时间紧迫。任何人都可以指导我做我应该做的事情吗?

4 个答案:

答案 0 :(得分:1)

您可以有2个选项。更新之前“绿色”值的同一行。即:

mysql_query("UPDATE table_name SET color = 'orange' WHERE ID = '3'");

mysql_query("UPDATE table_name SET color = 'orange' WHERE color = 'green'");

无论你的指定者是什么。

这应该是从MySql的角度来看最简单的方法。或者您可以按照最初的概述删除它,然后使用mysql_query重新插入新行(“INSERT INTO ....但是MySql PK UID需要重置,即:。

mysql_query("ALTER TABLE table_name AUTO_INCREMENT = 1");

将删除您使用的PK ID并重新编号所有行。或者是否有更简单的解决方案?

答案 1 :(得分:0)

我认为你想要更新记录,而不是删除旧记录并插入新记录。

修改

如果要插入新记录并为其分配下一个序列ID,请使用非auto_increment列并在添加新记录时执行此操作:

INSERT INTO myTable (id, ...) VALUES ( (SELECT MAX(id) + 1 FROM myTable), ...)

我没有数据库方便测试这个,但我认为它会起作用。但我不确定当桌子是空的时会发生什么。这也可能造成竞争条件。

答案 2 :(得分:0)

不,当您删除数据库行时,如果该列的AUTO_INCREMENT处于活动状态,则它将从序列中获取值。 如果删除3,则序列始终从3 + 1开始。 您可以看到\设置自动增量值,例如从php myadmin。 我不知道你使用的是什么DBMS,但是使用oracle你可以操作序列。

所以你有各种各样的方式。

  1. 复杂:插入\ delete时,使用触发器
  2. 更新序列
  3. 您使用3 coloumn:idIdToShowValue
  4. id与现在相同,你将它与autoinc一起使用。 idToShow也是你展示的。当你插入时,你可以插入它来计算表中存在的行(你有各种方法)。

    希望有所帮助。

答案 3 :(得分:0)

您的问题不是关于数据库ID,而是关于不了解ID和行号之间的区别。他们彼此无关。只需输出循环计数器(“$ i”)而不是ID。

<?php
for ($i = 1; $i <= foo(); $i++) {
    print "<tr><td>{$i}</td><td>...</td></tr>\n";
}
?>