0

哪个中间更安全地恢复和排序索引主键,避免整个数据库不必要的更新?你能告诉我任何例子吗?

我只是希望主键是恒定的和动态的。我只是希望主键是约束和动态的

ps:MySQL数据库


         User's Table

|| 用户名 || 用户名 || 用户姓氏

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

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

我的PHP代码在这里:

$user_id_cont = mysql_query("从用户中选择'user_id'"); $user_id = mysql_num_rows($user_id_cont)+1;

4

1 回答 1

0

像在代码中那样计算主键是绝对错误的

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

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;
于 2013-10-10T22:46:18.087 回答