在 MySQL 中添加新列并设置自动编号
- 2天前
- 讀畢需時 2 分鐘
这次需要在用MySQL运行的数据库表中添加新列并设置自动编号,因此整理一下该处理的流程。
修改 PurchaseList 表
首先确认表的当前结构。
show columns from robin.PurchaseList;当前的表结构如下。
Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
ASIN | varchar(10) | NO | PRI | NULL | |
SKU | varchar(255) | NO | PRI | NULL | |
PurchaseDatetime | datetime | YES | NULL | ||
Brand | varchar(255) | YES | NULL | ||
Title | varchar(255) | YES | NULL | ||
Model | varchar(255) | YES | NULL | ||
LocalCurrency | varchar(10) | YES | NULL | ||
Quantity | double | YES | NULL | ||
LocalPrice | double | YES | NULL | ||
Price | double | YES | NULL | ||
shipped_num | double | YES | NULL | ||
seller_id | varchar(14) | NO | NULL | ||
CreateDate | datetime | NO | CURRENT_TIMESTAMP | ||
UpdateDate | datetime | NO | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
接着,在最前面添加新列 `stock_id`。
ALTER TABLE PurchaseList ADD stock_id INT FIRST;新列 'stock_id' 的值全部为NULL,因此填入连续编号。
以下查询会为所有项目赋予连续编号。
set @n:=0;
update PurchaseList set stock_id=@n:=@n+1;
把 'stock_id' 重新设置为主键。
ALTER TABLE PurchaseList DROP PRIMARY KEY, ADD PRIMARY KEY (stock_id);之后,在 `Price` 之后添加新列 `shipped_num`。
ALTER TABLE PurchaseList ADD shipped_num double AFTER Price;
接着,为 `stock_id` 设置自动递增。
ALTER TABLE PurchaseList MODIFY stock_id INT NOT NULL AUTO_INCREMENT;至此,PurchaseList 表的修改就完成了。
Field | Type | Null | Key | Default | Extra |
stock_id | int(11) | NO | PRI | NULL | auto_increment |
ASIN | varchar(10) | NO | NULL | ||
SKU | varchar(255) | NO | NULL | ||
PurchaseDatetime | datetime | YES | NULL | ||
Brand | varchar(255) | YES | NULL | ||
Title | varchar(255) | YES | NULL | ||
Model | varchar(255) | YES | NULL | ||
LocalCurrency | varchar(10) | YES | NULL | ||
Quantity | double | YES | NULL | ||
LocalPrice | double | YES | NULL | ||
Price | double | YES | NULL | ||
shipped_num | double | YES | NULL | ||
shipped_num | double | YES | NULL | ||
seller_id | varchar(14) | NO | NULL | ||
CreateDate | datetime | NO | CURRENT_TIMESTAMP | ||
UpdateDate | datetime | NO | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
确认 PurchaseList 表是否进行自动编号
最后进行了实际的数据操作。显示最新5条记录的查询如下。
SELECT stock_id, SKU, ASIN FROM PurchaseList ORDER BY stock_id DESC LIMIT 5;stock_id | SKU | ASIN |
3683 | 2023-0472 | B08833PNRN |
3682 | 2023-0471 | B07WSKKMFV |
3681 | 2023-0470 | Z1-6CEL-2X |
3680 | 2023-0469 | B0CJJ4SFVY |
3679 | 2023-0494 | B0CJJ2WQ1F |
确认了连续编号已设置。
最后确认对新数据是否会自动编号。
INSERT INTO PurchaseList (ASIN, SKU) VALUES ('test', 'test');
SELECT stock_id, SKU, ASIN FROM PurchaseList ORDER BY stock_id DESC LIMIT 5;stock_id | SKU | ASIN |
3684 | test | test |
3683 | 2023-0472 | B08833PNRN |
3682 | 2023-0471 | B07WSKKMFV |
3681 | 2023-0470 | Z1-6CEL-2X |
3680 | 2023-0469 | B0CJJ4SFVY |
确认了会自动编号。
作为收尾,删除确认用的数据即告结束。
DELETE FROM PurchaseList WHERE ASIN='test' AND SKU='test';
以上就是在MySQL中添加自动编号列的流程。请作为今后系统正常运行的参考。



留言