Fly*_*Cat 147 mysql primary-key
我试图改变一个没有主键和auto_increment列的表.我知道如何添加主键列,但我想知道是否可以自动将数据插入主键列(我已经在DB中有500行并且想要给它们id,但我不想手动执行) .有什么想法吗?非常感谢.
Mic*_*ski 233
ALTER TABLE添加PRIMARY KEY列的语句在我的测试中正常工作:
ALTER TABLE tbl ADD id INT PRIMARY KEY AUTO_INCREMENT;
Run Code Online (Sandbox Code Playgroud)
在为测试目的而创建的临时表上,上面的语句创建了AUTO_INCREMENT id列,并为表中的每个现有行插入了自动增量值,从1开始.
小智 44
假设您没有像id,no那样的自动增量列,那么您可以使用以下查询添加:
ALTER TABLE table_name ADD id int NOT NULL AUTO_INCREMENT primary key FIRST
Run Code Online (Sandbox Code Playgroud)
如果您是列,则使用以下查询更改为自动增量:
ALTER TABLE table_name MODIFY column_name datatype(length) AUTO_INCREMENT PRIMARY KEY
Run Code Online (Sandbox Code Playgroud)
小智 9
为了使现有主键为auto_increment,您可以使用:
ALTER TABLE table_name MODIFY id INT AUTO_INCREMENT;
Run Code Online (Sandbox Code Playgroud)
对于像我这样遇到Multiple primary key defined错误的人,请尝试:
ALTER TABLE `myTable` ADD COLUMN `id` INT AUTO_INCREMENT UNIQUE FIRST NOT NULL;
Run Code Online (Sandbox Code Playgroud)
在 MySQL v5.5.31 上,这将id列设置为我的主键,并用递增值填充每一行。
是的,这样的事情可以做到,但可能不是最好的,你可能想要备份
$get_query = mysql_query("SELECT `any_field` FROM `your_table`");
$auto_increment_id = 1;
while($row = mysql_fetch_assoc($get_query))
{
$update_query = mysql_query("UPDATE `your_table` SET `auto_increment_id`=$auto_increment_id WHERE `any_field` = '".$row['any_field']."'");
$auto_increment_id++;
}
Run Code Online (Sandbox Code Playgroud)
请注意,any_field更新时您选择的必须相同。
| 归档时间: |
|
| 查看次数: |
199934 次 |
| 最近记录: |