top of page

在 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中添加自动编号列的流程。请作为今后系统正常运行的参考。

 
 
 

留言


© Copyright ROBIN planning LLC.

bottom of page