恢复索引主键

时间:2013-10-10 21:27:01

标签: mysql indexing primary-key

哪个中间更安全的mes来恢复和排序索引主键,避免在整个数据库中进行不必要的更新?你能告诉我一些例子吗?

我只想要那些主键是恒定和动态的。我只想主键是约束和动态

ps:MySQL数据库


         User's Table

|| user_id || user_first_name || user_last_name

 #1            Alexandre               Doria
 #2            Ilya                    Bursov
 #3            Anybody                 Anybody

因此,如果我删除#2行,并插入新行,则#3行的主键是重复的。

我的PHP代码:

$ user_id_cont = mysql_query(“select'user_id'from user”); $ user_id = mysql_num_rows($ user_id_cont)+1;

1 个答案:

答案 0 :(得分:0)

在代码中完成计算主键是完全错误的

首先 - 将user_id列更改为主键(它也将是唯一的),也将其设置为auto_increment,因此您的表create语句必须是:

create table sample_users (
`user_id` int unsigned not null auto_increment,
`first` varchar(255),
`last` varchar(255),
primary key (`user_id`)
);

接下来,您需要在表格中插入数据,因此您只需插入数据:

INSERT into `sample_users` (`first`, `last`) values('fname', 'lname');
INSERT into `sample_users` (`first`, `last`) values('fname2', 'lname2');
...

mysql会为每一行生成相应的user_id,即使你删除其中的一些 - mysql仍然会为你提供唯一的值

另外一种情况是 - 如果你需要知道mysql生成了什么id,你可以使用PHP mysql_insert_id或MySQL LAST_INSERT_ID函数

仅供注意:错误的方法,但它适用于“学校项目”,将您的代码更改为:

$user_id_cont = mysql_query("select max('user_id') from user");
$user_id = mysql_fetch_array($user_id_cont, MYSQL_NUM);
$user_id = $user_id[0]+1;