2014-04-03 25 views
0

我有数据库,我保存我的记录。当我在我的数据库ID为2的记录删除的记录被保存为 ID,姓名Mysql删除记录后递减其他ID的

例如

  1. 尼克
  2. 名称
  3. 用户名现在

它仍然作为 1.尼克 3.用户名 我想,当我从数据库中删除一个记录其他ID的自动减少一个值,所以我得到。 1.尼克 2.用户名 你明白我的问题。 Sry基因的英语不好

按钮删除代码

if(isset($_POST['tipkaobrisi'])) // pritisnuta tipka obrisi 
{ 
    $obrisankorisnik = $_POST['obrisi']; 
    if ($obrisankorisnik == '')echo "<div align='center'>Unesite korisnika kojeg zelite obrisati!</div>"; 
    else 
    { 
     mysql_query("DELETE FROM Korisnici WHERE Korisnik ='$obrisankorisnik'"); 
     echo "<div align='center'>Korisnik obrisan<br><br></div>"; 
    } 
} 
+4

我无法想象为什么你想重新排序你的唯一ID。这实际上没有理由。不管你喜欢,你总是可以选择你的记录。 – durbnpoisn

+2

你不想这样做。这些ID用于与其他表格相关联。如果你在一个表中改变一个ID,你必须全部改变它们。大混乱,大量的开销。缺少ID时没有问题。 – AbraCadaver

+0

我不想在我的数据库中我没有任何记录在编号2下。这是 – t3cho

回答

1

听其他程序设计师的忠告年代后。我决定我不想编辑我的ID。

感谢大家的参与。

+0

相当不错的决定。但知道解决方案,唯一的方法(我猜)是删除列并以编程方式再次创建它。 –

+0

^哪一个会有天文开销:( –

2

这不是大多数ID列的意图。但是,您可以通过修改用于访问这些记录的语句来模拟此功能。

E.g.而不是使用ID值,请使用以下内容:

select @rownum:[email protected]+1 as ID, name from users, (SELECT @rownum:=0) r order by id; 

它会给每个记录返回一个数字,没有差距。取决于你想要什么,这可能就足够了。如果你想治疗这种新的ID值作为 ID值,创建一个视图,并访问您的要素基础上,像这样:

CREATE VIEW users_view as select @rownum:[email protected]+1 as ID, name from users, (SELECT @rownum:=0) r order by id; 

此时您可以SELECT * FROM users_view WHERE ID = $ id并让它像往常一样工作。只要你永远不插入一个不自动递增的新记录,这个方案应该可以工作。

请记住,删除任何人都会更改一堆ID,所以不推荐。